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

查看 51|回复 3
作者:lsk569937453   

鉴于上次帖子,有很多同学提出想要对比一下 tokio 的mini-redis的性能(毕竟 tokio 在 rust 界就如高山一样让我们仰望)。我马不停蹄的开始拉镜像做对比,发现 mini-redis 在多线程下 QPS 居然是原生 redis 的两倍。我拜读了一下 mini-redis 的源码,发现流程非常之简洁。因此把 rcache 重构了一把,终于达到了 mini-redis 的水准。
源码
https://github.com/lsk569937453/rcache/tree/mutex
性能对比(4 核心 8Gb 内存)
  • X 轴代表吞吐量
  • Y 轴代表 benchmark 下单线程和多线程(添加--threads 16)的测试


    总共做了三组对比实验:
  • redis:原生 redis
  • rcache(mpsc 的 channel 版本):rcache 的 1.0 实现
  • rcache(全局 mutex 版本):rcache 参考 mini-redis 实现,性能和 mini-redis 一样

    实验结果
    rcache 基于 mini-redis 的实现,性能等于 mini-redis 。相比原生的 redis ,单线程吞吐量是 redis 的 90%,多线程的吞吐量是原生的 redis 的两倍。
    架构
    参考 mini-redis,直接用 Mutex 对全局的数据加锁,全局的 struct 内部其实就是用多个 HashMap 来存储 string,list,hash 以及过期 map 等数据结构。没想到效果出奇的好。
  • d9e7381f   
    没仔细了解过 mini-redis ,请教一下为啥多线程能够达到 redis 的两倍吞吐
    keakon   
    大概是因为 redis 是单线程的。
    bug123   
    cpu 占用分别是多少?一个是多线程一个是单线程
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部