#cache #memcached #front-end #tcp #basic #protocols #memory

nightly bin+lib rcache

一个基本的、无功能的内存缓存,具有类似于 memcached 的 TCP 前端

2 个版本

使用旧的 Rust 2015

0.1.1 2017 年 8 月 1 日
0.1.0 2017 年 8 月 1 日

#memcached 中排名 #26

MIT 许可证

41KB
962

请参阅 docs.rs 上的文档: https://docs.rs/rcache/0.1.0/rcache/


lib.rs:

rcache

rcache 是一个基本的、无功能的内存缓存,具有类似于 memcached 的 TCP 前端。它不是生产就绪的,并且它可能永远不会是。尽管如此,它的性能相对较好,且稳定,是 Rust 开发者可以实现的一个很好的例子。

待办事项包括更好的基准测试、更强大的客户端(针对 Rust 和命令行)、对更完整命令集的支持,以及改进二进制协议以至少包括 CRC 校验。

功能

  • 基于 tokio
  • 该 TCP 前端使用多路复用二进制协议,详细(质量不佳)地记录在 src/codec.rs 中。
  • 目前支持 GET、SET 和 DEL 命令。CAS 明显缺失,但最终会加入。
  • 存储由基于链接散列表的 LRU 缓存提供支持(由 lru-cache crate 提供),所有操作都通过单个工作线程执行,该工作线程对存储有非同步访问。

使用方法

启动服务器: cargo run -- 127.0.0.1:12345 server

设置键: cargo run -- 127.0.0.1:12345 client SET foo bar

获取键: cargo run -- 127.0.0.1:12345 client GET foo

获取统计信息: cargo run -- 127.0.0.1:12345 client STATS

性能

我目前正在提供现实世界的基准测试。简单的基准测试显示,rcache可以在缓存中处理约50k/req/s的请求,同时缓存中有2,000,000个键。这次基准测试使用了100个并发客户端,每个客户端发出500个请求。然而,我对我的基准测试方法中的许多问题没有疑问。即便如此,一个周末的实施方案能够达到与memcached相同的水平,这还是很令人欣慰的。

依赖关系

~8.5MB
~134K SLoC