介紹一個 Rust 的鍵值存儲庫:keyv

Keyv 是一個簡單的鍵值存儲庫,旨在簡化鍵值存儲並增加其靈活性,支持多個後端。它爲跨後端鍵值存儲提供了一致的接口。由於支持基於 ttl 的過期,它足夠通用,既可以充當緩存,也可以充當持久鍵值存儲,以適應你的需求。

可以在哪裏使用 Keyv?

假設你正在處理一個需要緩存用戶會話的高流量 web 服務。keyv 可以快速與 Redis 後端合作,爲你提供內存級的存取速度。或者,假設你正在構建一個需要持久存儲的應用程序,keyv 與 PostgreSQL 將是你的首選。

以下是 keyv 發揮作用的一些場景:

Keyv 使用案例

Keyv 支持多種存儲適配器,可以與各種存儲後端無縫集成。使用 feature 標誌激活它們:

Keyv 提供了一種簡單的方法來管理鍵值數據,下面是如何在 Rust 項目中使用它。

使用以下命令創建一個 Rust 新項目:

cargo new keyv-example

在 Cargo.toml 文件中加入以下依賴項:

[dependencies]
keyv = {version = "0.2.1"features = ["full"]}
tokio = {version = "1.37.0"features = ["full"]}

內存存儲 (默認)

use keyv::Keyv;

#[tokio::main]
async fn main() {
    // 用默認內存存儲初始化' keyv '
    let keyv = Keyv::default();

    // 設置一個值
    keyv.set("my_key""my_value").await.unwrap();

    // 獲取值
    if let Some(value) = keyv.get("my_key").await.unwrap() {
        println!("Retrieved value: {}", value);
    } else {
        println!("Value not found");
    }

    // 刪除值
    keyv.remove("my_key").await.unwrap();
}

與存儲適配器一起使用

調整 keyv 以使用不同的存儲適配器,如 Redis。

use keyv::{adapter::redis::RedisStoreBuilder, Keyv};

#[tokio::main]
async fn main() {
    // 使用默認TTL初始化Redis存儲
    let store = RedisStoreBuilder::new()
        .uri("redis://localhost:6379")
        .default_ttl(3600) // 1 hour TTL
        .build()
        .await
        .unwrap();

    // 用Redis store創建keyv實例
    let keyv = Keyv::try_new(store).await.unwrap();

    // 設置值和檢索值
    keyv.set("my_key""my_value").await.unwrap();
    let value = keyv
        .get("my_key")
        .await
        .unwrap()
        .expect("Key not found");

    println!("Retrieved value: {}", value);
}

要進行測試,需要先運行 redis docker 鏡像:

docker run --name keyv-redis-test -p 6379:6379 -d redis:latest

運行結果如下:

Retrieved value: my_value
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/J-ud0Yv9XF1bshUZ6AE_yQ