#server-client #cache #client #api-client #messaging

bin+lib famcache

官方 Famcache 服务器客户端

7 个稳定版本

1.1.8 2024 年 5 月 31 日

#67缓存

Download history 65/week @ 2024-05-25 190/week @ 2024-06-01 8/week @ 2024-06-08 62/week @ 2024-06-29 53/week @ 2024-07-27

每月 53 次下载

MIT 许可证

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:具有以下属性的配置对象
    • hostFamcache 服务器的域名。
    • portFamcache 服务器的端口号。

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