#memcached #binary #consistent-hashing #protocols #pool #set #minor

bmemcached

使用纯 Rust 实现的 Memcached 二进制协议,支持 '池' 和一致性哈希。 (目前,直到 v1 版本发布,小版本将破坏 API)

7 个版本 (4 个破坏性更新)

使用旧的 Rust 2015

0.5.0 2018 年 7 月 30 日
0.4.0 2017 年 11 月 1 日
0.3.1 2017 年 9 月 13 日
0.2.1 2016 年 4 月 22 日
0.1.0 2016 年 4 月 21 日

#10 in #minor

MIT 许可证

31KB
720

bmemcached-rs 构建状态 Clippy 检查结果

Rust 二进制 memcached 实现 (进行中)

使用方法

extern crate bmemcached;

use std::sync::Arc;
use std::thread;

use bmemcached::MemcachedClient;

fn main() {
    // Use arc for threading support
    let client = Arc::new(MemcachedClient::new(vec!["127.0.0.1:11211"], 5).unwrap());

    // Traits examples
    let value = "value";
    client.set("string", value, 1000);
    let rv: String = client.get("string").unwrap();
    assert_eq!(rv, "value");

    client.set("integer", 10 as u8, 1000);
    let rv: u8 = client.get("integer").unwrap();
    assert_eq!(rv, 10 as u8);

    // Threads example
    let mut threads = vec![];
    for i in 0..4 {
        let client = client.clone();
        threads.push(thread::spawn(move || {
            let data = format!("data_n{}", i);
            client.set(&data, &data, 100).unwrap();
            let val: String = client.get(&data).unwrap();
            client.delete(&data).unwrap();
            val
        }));
    }
    for (i, thread) in threads.into_iter().enumerate() {
        let result = thread.join();
        assert_eq!(result.unwrap(), format!("data_n{}", i));
    }
}

为什么

我正在通过重新实现我写的 Python 项目来学习 Rust。

哪些功能工作

  • 添加
  • 设置
  • 替换
  • 获取
  • 删除
  • 增加
  • 减少
  • 一致性哈希
  • 线程支持

特质使用

对于所有支持的函数,我们使用特质来能够向 memcached 发送任何类型的值。

依赖关系

~3.5–4.5MB
~91K SLoC