4 个版本 (破坏性更新)

0.4.0 2021 年 12 月 20 日
0.3.0 2021 年 4 月 14 日
0.2.0 2021 年 4 月 11 日
0.1.0 2021 年 4 月 8 日

缓存 中排名 171

MIT 许可证

53KB
1K SLoC

rsmc-tokio

此包旨在提供使用 rsmc-core 的完整功能的 memcached 客户端,用于 Tokio 异步运行时

这还是一个早期实现,因此请期待一些错误和缺失的功能。如果您发现有什么问题,请打开 GitHub 问题(或者,更好的是,提交一个 PR 来修复问题!)

在 1.0 版本发布之前,预计会有一些破坏性更改。

特性

  • 异步
  • deadpool 提供连接池
  • TLS 支持
  • 二进制协议支持
    • get, multi_get
    • set, multi_set
    • delete, multi_delete
    • add, replace
    • increment, decrement
  • 一致性哈希
    • 支持不同的哈希算法。
  • 压缩
    • 支持不同的压缩算法。

快速开始

use flate2::Compression;
use rsmc_core::{
    client::{ClientConfig, Pool},
    zlib::ZlibCompressor,
};
use rsmc_tokio::TokioConnection;


// Consistent hashing is used to distribute keys
// evenly across a memcached cluster.
let memcached_servers = vec![
    "localhost:11211",
    "localhost:11212",
    "localhost:11213",
];

// Use `ClientConfig::new_uncompressed()` if compression is not desired.
// You can disable the `zlib` feature (on by default) to disable it entirely.
let cfg = ClientConfig::new(memcached_servers, ZlibCompressor::default());

// Create a connection pool with (at most) 16 connections per server.
let pool = Pool::<TokioConnection, _>::new(cfg, 16);
let mut client = pool.get().await.unwrap();

client.set(b"hello", b"world", 300).await.unwrap();
let response: Option<Vec<u8>> = client.get(b"hello").await.unwrap(); // "world"

依赖

~4–11MB
~107K SLoC