今天咱也用 rust 实现一个 redis 的 demo,性能差不多。

269 天前
 lsk569937453

源码

https://github.com/lsk569937453/rcache

性能对比(4 核心 8Gb 内存)

本地压测 docker-compose.yml

用户可以本地启动 docker-compose 来进行压测。

https://github.com/lsk569937453/rcache/blob/main/docker-compose/docker-compose.yml

2700 次点击
所在节点    程序员
9 条回复
xyj998
269 天前
已 star
ben666
268 天前
对于这种 IO 性的网络应用,很多开销是在网络协议栈里,对于一些简单的 case ,不如用 DPDK 去实现,性能更高,参考 dperf ,整机可以达到 8 千万新建每秒,吞吐 800Gbps ,几十亿并发。

https://dperf.org/
goodspb
268 天前
starred, 学习!
BBCCBB
268 天前
既然是用 rust 实现的, 那咱们就把 redis 的第一个字母去掉, 换成 rust. 所以 repo 就叫 redis
cfeitong
268 天前
其实 tokio 官方的 example 里,就有个 simple-redis ,可以看眼那个实现,对比下。
Jirajine
268 天前
记得几年前 tokio 的官方 tour 就是实现一个简单的 redis server ,然而那个 demo 只涉及到 happy path ,过了一遍之后你觉得 async rust 挺舒服,直到想要自己实现 async trait 的时候,需要手写 poll/pin 就抓瞎了。
0x676e67
268 天前
nice
codegenerator
268 天前
你使用的是 mpsc::channel ,这就相当于一把锁,读写冲突下跟单线程当然没有优势
多线程情况下可以采用多种方式优化读写锁冲突,缓存的读是远大于写的其实优化空间更大
我用 rust 实现的 redis 轻松 10 倍
lsk569937453
257 天前
@cfeitong 已经测试了,结果在这里 https://v2ex.com/t/1031987#reply5

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1029385

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX