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

2024-04-03 11:05:59 +08:00
 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

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

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

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

https://yangjunhui.monster/t/1029385

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

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

© 2021 V2EX