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
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8