7 个稳定版本
1.1.8 | 2024 年 5 月 31 日 |
---|
#67 在 缓存 中
每月 53 次下载
83KB
451 行
Famcache-rs
Famcache-rs
是一个 Rust 客户端,用于 Famcache
,一个用 Go 编写的缓存服务器。此客户端提供了一种简单的接口,用于连接到 Famcache
并执行基本缓存操作,如设置、获取和删除值。
特性
- 异步 API:使用
tokio
进行完全异步操作,以与Famcache
服务器交互。 - 线程安全:使用
RwLock
进行安全并发访问。 - 简单直观:易于使用的 API,具有简单的缓存操作方法。
安装
将 famcache 添加到您的 Cargo.toml
或直接运行
cargo add famcache
用法
以下是如何使用 famcache-rs 的快速示例
缓存操作
use famcache::{Config, Famcache};
#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
let mut client = Famcache::new(Config::new("localhost", 3577));
client.connect().await?;
client.set("test", "rust", None).await?;
client.set("test1", "rust2", None).await?;
let val = client.get("test").await?;
println!("Connected to server: {:?}", val);
Ok(())
}
消息传递
use anyhow::Result;
use famcache::{Config, Famcache};
#[tokio::main]
async fn main() -> Result<()> {
let mut client = Famcache::new(Config::new("localhost", 3577));
client.connect().await?;
let mut subscription = client.messaging.subscribe("topic1").await?;
tokio::spawn(async move {
loop {
let message = subscription.recv().await.unwrap();
println!("Received message: {}", message);
}
})
.await?;
client.messaging.unsubscribe("topic1").await?;
Ok(())
}
API 参考
Famcache
new(config:Config) -> Self
创建一个新的 Famcache
客户端实例。
config
:具有以下属性的配置对象host
:Famcache
服务器的域名。port
:Famcache
服务器的端口号。
connect(&mut self) -> Result<()>
打开到 Famcache
服务器的连接。
set(&self,key: &str,value: &str,ttl: Option<u64>) -> Result<()>
在缓存中设置值。
key
:要设置的键。value
:要设置的值。ttl
:可选的毫秒生存时间。
get<T>(&self,key: &str) -> Result<Option<T>>
从缓存中获取值。
key
:要检索的键。
返回与键关联的值或 None
(如果键不存在)。
del(&self,key: &str) -> Result<()>
从缓存中删除值。
key
:要删除的键。
messaging.publish(&self,topic: &str,data: &str) -> Result<()>
向主题发布消息。
topic
:要发布的主题。data
:要发布的消息数据。
messaging.subscribe(&self,topic: &str) -> Result<Receiver<String>>
订阅主题并返回一个接收器以接收消息。
topic
:要订阅的主题。
messaging.取消订阅(&self,topic: &str) -> Result<()>
从主题中取消订阅。
topic
:要取消订阅的主题。
开发
先决条件
- Rust
- Cargo
安装依赖
cargo build
运行测试
cargo test
贡献
欢迎贡献!请为任何错误或改进打开一个问题或提交一个拉取请求。
许可证
本项目受MIT许可证许可。有关详细信息,请参阅LICENSE文件。
依赖
~2.7–9MB
~63K SLoC