Rust 版 Memcached 来了
2022-1-27 18:24:52 Author: mp.weixin.qq.com(查看原文) 阅读量:15 收藏

也许现在 Memcached 用的不多,更多可能使用的 Redis,但曾经风靡一时。在 Go 圈,有一个库 https://github.com/golang/groupcache,是 Memcached 的作者实现的。今天发现 Rust 圈也有轮子,它就是 memcrsd。

项目地址:https://github.com/memc-rs/memc-rs,官网:https://www.memc.rs/。

这是一个与 Memcached 兼容的通用分布式内存缓存系统。

它有如下特性:

  • 安全。Rust 编程语言实现并使用 Tokio 运行时确保内存和线程安全。
  • 快速。可以以最小的开销处理数千个请求。
  • 兼容。100% 兼容 memcached 二进制协议。无需重写你的代码。只需启动服务器并使用你喜欢的语言/框架即可。
  • 简单。借助 Rust 的优势,编译为单个二进制文件,可以部署在任何地方。将二进制文件复制到任何你想放置的地方,启动服务器,你就完成了。也可使用你喜欢的工具构建易于部署和分发的容器。

官方提供了 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


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxNzY0NDE3NA==&mid=2247489414&idx=1&sn=4164c3d1d021d98a85d90a7d7f5aa6a9&chksm=9be33867ac94b17113ffe0cb0a2f5cae210cbd2810f7f227dc73a99565b2be42cc4d07edb998#rd
如有侵权请联系:admin#unsafe.sh