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
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