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

Download history 1609/week @ 2024-04-23 1192/week @ 2024-04-30 825/week @ 2024-05-07 1426/week @ 2024-05-14 1298/week @ 2024-05-21 1093/week @ 2024-05-28 851/week @ 2024-06-04 1143/week @ 2024-06-11 1161/week @ 2024-06-18 911/week @ 2024-06-25 1515/week @ 2024-07-02 1090/week @ 2024-07-09 1226/week @ 2024-07-16 1218/week @ 2024-07-23 1465/week @ 2024-07-30 993/week @ 2024-08-06

每月下载量 5,254
7 Crates 中使用 (直接使用 6 个)

MIT 许可协议

92KB
2K SLoC

rust-memcache

Build Status Codecov Status Crates.io MIT licensed Docs Gitter chat

rust-memcache 是用纯 Rust 编写的 memcached 客户端。

logo

安装

该库名为 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