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

328 天前
lsk569937453  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

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

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