This is the key-value interface with the contract ID of wasmcloud:keyvalue
. This interface defines a set of common operations for interacting with key-value stores.
Note that things like consistency guarantees, backup, failover support, replications, and more are all concerns specific to individual providers and not the interface itself.
The following is a list of implementations of the wasmcloud:keyvalue
contract. Feel free to submit a PR adding your implementation if you have a community/open source version.
| Name | Vendor | Description | | :--- | :---: | :--- | | Redis | wasmCloud | wasmCloud key-value provider for the Redis database | Vault | wasmCloud | wasmCloud key-value provider for the Hashicorp Vault secrets engine.
Check if a value exists in the kvstore ```rust use wasmbusrpc::actor::prelude::Context; use wasmcloudinterface_keyvalue::{KeyValue, KeyValueSender};
async fn keyexists(ctx: &Context, key: &str) -> bool { KeyValueSender::new().contains(ctx, key).await.isok() } ```
Increment a numeric value
rust
use wasmbus_rpc::actor::prelude::*;
use wasmcloud_interface_keyvalue::{IncrementRequest, KeyValue, KeyValueSender};
/// increment the counter by the amount, returning the new value
async fn increment_counter(ctx: &Context, key: String, value: i32) -> RpcResult<i32> {
let new_val = KeyValueSender::new()
.increment(ctx, &IncrementRequest { key, value })
.await?;
Ok(new_val)
}