#key-value-store #key-value #wasmcloud #capability #redis #capability-provider #api-bindings

wasmcloud-interface-keyvalue

为wasmCloud演员提供访问键值存储(wasmcloud:keyvalue)的接口

19个版本 (10个重大更新)

0.12.0 2023年9月19日
0.11.0 2023年7月20日
0.10.0 2023年4月12日
0.9.1 2022年11月23日
0.3.0 2021年10月24日

#761数据库接口

Download history 245/week @ 2024-04-21 24/week @ 2024-04-28 25/week @ 2024-05-05 28/week @ 2024-05-12 13/week @ 2024-05-19 23/week @ 2024-05-26 65/week @ 2024-06-02 82/week @ 2024-06-09 5/week @ 2024-06-30 48/week @ 2024-07-14 10/week @ 2024-07-21 13/week @ 2024-07-28

每月76 次下载

Apache-2.0 和可能 LGPL-3.0-or-later

52KB
1K SLoC

crates.io  TinyGo Version

WasmCloud键值接口

这是具有合同ID wasmcloud:keyvalue 的键值接口。此接口定义了一组用于与键值存储交互的通用操作。

请注意,一致性保证、备份、故障转移支持、复制等都是特定于个别提供者的关注点,而不是接口本身。

能力提供者实现

以下是一个实现 wasmcloud:keyvalue 合同的列表。如果您有一个社区/开源版本,请随时提交PR添加您的实现。

名称 供应商 描述
Redis wasmCloud wasmCloud为Redis数据库提供的键值提供者
Vault wasmCloud wasmCloud为HashiCorp Vault 密钥引擎提供的键值提供者。

示例用法

🦀 Rust

检查kvstore中是否存在值

use wasmbus_rpc::actor::prelude::Context;
use wasmcloud_interface_keyvalue::{KeyValue, KeyValueSender};

async fn key_exists(ctx: &Context, key: &str) -> bool {
    KeyValueSender::new().contains(ctx, key).await.is_ok()
}

增加数值

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)
}

🐭 Golang

检查kvstore中是否存在值

import "github.com/wasmcloud/actor-tinygo"
import keyvalue "github.com/wasmcloud/interfaces/keyvalue/tinygo"

func KeyExists(ctx *actor.Context, key string) (bool, error){
   client := keyvalue.NewProviderKeyValue()
   return client.Contains(ctx, key)
}

增加数值

import "github.com/wasmcloud/actor-tinygo"
import keyvalue "github.com/wasmcloud/interfaces/keyvalue/tinygo"

func IncrementCounter(ctx *actor.Context, key string, value int32) (int32, error) {
   client := keyvalue.NewProviderKeyValue()
   return client.Increment(ctx, keyvalue.IncrementRequest{key, value})
}

依赖关系

~12–30MB
~487K SLoC