鉴于上次帖子,有很多同学提出想要对比一下 tokio 的mini-redis的性能(毕竟 tokio 在 rust 界就如高山一样让我们仰望)。我马不停蹄的开始拉镜像做对比,发现 mini-redis 在多线程下 QPS 居然是原生 redis 的两倍。我拜读了一下 mini-redis 的源码,发现流程非常之简洁。因此把 rcache 重构了一把,终于达到了 mini-redis 的水准。
源码
https://github.com/lsk569937453/rcache/tree/mutex
性能对比(4 核心 8Gb 内存)
总共做了三组对比实验:
实验结果
rcache 基于 mini-redis 的实现,性能等于 mini-redis 。相比原生的 redis ,单线程吞吐量是 redis 的 90%,多线程的吞吐量是原生的 redis 的两倍。
架构
参考 mini-redis,直接用 Mutex 对全局的数据加锁,全局的 struct 内部其实就是用多个 HashMap 来存储 string,list,hash 以及过期 map 等数据结构。没想到效果出奇的好。