也许现在 Memcached 用的不多,更多可能使用的 Redis,但曾经风靡一时。在 Go 圈,有一个库 https://github.com/golang/groupcache,是 Memcached 的作者实现的。今天发现 Rust 圈也有轮子,它就是 memcrsd。
项目地址:https://github.com/memc-rs/memc-rs,官网:https://www.memc.rs/。
这是一个与 Memcached 兼容的通用分布式内存缓存系统。
它有如下特性:
官方提供了 Docker 镜像,也可以下载编译好的。不过目前只提供了 Linux 版本下载:https://www.memc.rs/download。
你也可以通过源码构建。先安装 Rust:
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
以上会安装 rustup,这是 Rust 的版本管理工具,同时会安装上 Rust。
如果已经安装了,可以通过 rustup 升级到最新版本(因为 memc.rs 要求 Rust 2021 版):
$ rustup update
之后下载 memc.rs 源码,编译安装:
$ git clone https://github.com/memc-rs/memc-rs.git
$ cd memc-rs
$ cargo build --release
然后运行:
$ ./target/release/memcrsd -v -c 50000 -r 7 -l 0.0.0.0 -v -m 2048
2021-12-24T03:13:33.088441Z INFO memcrsd: Listen address: 0.0.0.0
2021-12-24T03:13:33.088470Z INFO memcrsd: Listen port: 11211
2021-12-24T03:13:33.088475Z INFO memcrsd: Connection limit: 50000
2021-12-24T03:13:33.088478Z INFO memcrsd: Number of runtimes: 7
2021-12-24T03:13:33.088480Z INFO memcrsd: Number of threads total: 8
2021-12-24T03:13:33.088482Z INFO memcrsd: Max item size: 1000000
2021-12-24T03:13:33.088485Z INFO memcrsd: Memory limit: 2048 MB
该项目中还包含了一个简单的验证客户端,源码构建时,默认没有编译,在项目中的 Cargo.toml 注释打开:
members = [
"memcrs"
"memclt"
]
再次编译即可。
然后运行测试:
$ ./target/release/memclt
Foo: "test" 0 1
Foo: "bistestbas" 0 3
Server returned: 3050
Version: [("memcache://127.0.0.1:11211?timeout=120&tcp_nodelay=true&protocol=binary", "0.0.1")]
也许你不会实际使用 memcrsd,但作为 Rust 爱好者,可以将该项目作为学习之用。
我是 polarisxu,北大硕士毕业,曾在 360 等知名互联网公司工作,10多年技术研发与架构经验!2012 年接触 Go 语言并创建了 Go 语言中文网!著有《Go语言编程之旅》、开源图书《Go语言标准库》等。
坚持输出技术(包括 Go、Rust 等技术)、职场心得和创业感悟!欢迎关注「polarisxu」一起成长!也欢迎加我微信好友交流:gopherstudio