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

24次阅读

共计 592 个字符,预计需要花费 2 分钟才能阅读完成。

鉴于上次 帖子 , 有很多同学提出想要对比一下 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) 的测试
    今天咱也用 rust 实现一个 redis 的 demo, 性能差不多。[第二弹]

总共做了三组对比实验:

  • 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 等数据结构。没想到效果出奇的好。

正文完
 0