44 个版本
0.17.2 | 2024年1月21日 |
---|---|
0.17.1 | 2023年11月9日 |
0.17.0 | 2022年10月31日 |
0.16.0 | 2021年11月7日 |
0.0.4 | 2014年11月21日 |
在 数据库接口 中排名 142
每月下载量 5,254
在 7 个 Crates 中使用 (直接使用 6 个)
92KB
2K SLoC
rust-memcache
rust-memcache 是用纯 Rust 编写的 memcached 客户端。
安装
该库名为 memcache
,您可以通过 cargo 依赖它。
[dependencies]
memcache = "*"
功能
- 所有 memcached 支持的协议
- 二进制协议
- ASCII 协议
- 所有 memcached 支持的连接
- TCP 连接
- UDP 连接
- UNIX 域套接字连接
- TLS 连接
- 编码
- 类型化接口
- 自动压缩
- 自动序列化为 JSON / msgpack 等
- 支持自定义密钥哈希算法的 memcached 集群
- 权限
- 二进制协议 (纯 SASL 权限 plain)
- ASCII 协议
基本用法
// create connection with to memcached server node:
let client = memcache::connect("memcache://127.0.0.1:12345?timeout=10&tcp_nodelay=true").unwrap();
// flush the database
client.flush().unwrap();
// set a string value
client.set("foo", "bar", 0).unwrap();
// retrieve from memcached:
let value: Option<String> = client.get("foo").unwrap();
assert_eq!(value, Some(String::from("bar")));
assert_eq!(value.unwrap(), "bar");
// prepend, append:
client.prepend("foo", "foo").unwrap();
client.append("foo", "baz").unwrap();
let value: String = client.get("foo").unwrap().unwrap();
assert_eq!(value, "foobarbaz");
// delete value:
client.delete("foo").unwrap();
// using counter:
client.set("counter", 40, 0).unwrap();
client.increment("counter", 2).unwrap();
let answer: i32 = client.get("counter").unwrap().unwrap();
assert_eq!(answer, 42);
自定义密钥哈希函数
如果您有多个 memcached 服务器,您可以使用包含它们 URL 列表的 memcache::Client
结构。哪个服务器用于存储和检索取决于密钥。
此库使用 Rust 内置哈希函数的基本规则来执行此操作,并且您还可以使用您自定义的函数来执行此操作,例如,您可以使用具有更多内存配额的服务器来存储更多数据,或使用前缀将集群密钥分组,或使用一致性哈希来处理大型 memcached 集群。
let mut client = memcache::connect(vec!["memcache://127.0.0.1:12345", "memcache:///tmp/memcached.sock"]).unwrap();
client.hash_function = |key: &str| -> u64 {
// your custom hashing function here
return 1;
};
贡献
在发送拉取请求之前,请确保
cargo fmt
正在运行;- 提交消息使用 gitmoji,第一个字符是小写字母,例如:
:sparkles: rust-memcache 现在可以打印金钱了
。
贡献者
许可协议
MIT
依赖项
~2.1–8.5MB
~94K SLoC