693 字 | 2 分钟

Tendis存储版 vs Redis cluster

优点:

  • 所有数据存储到磁盘,提供更大的容量和更低的成本,数据可靠性更高
  • 多线程架构,单进程的性能吞吐比redis单进程更高(30wQPS vs 13wQPS)
  • 独立的gossip网络线程,支持更多的节点通讯,支持更大规模的集群
  • 更强大的数据搬迁能力,原redis cluster的搬key实现,如果遇到大key,会导致比较恶劣的全局阻塞
  • 基于rocksdb的镜像和完善的binlog实现,支持任意时间点的回档,社区版redis暂无这个能力
  • 支持增量复制及复制断开断点续传,redis复制断开需要全量复制

缺点:

  • 对比纯内存的redis,Tendis存储版的延时更大
  • 部分命令还不支持(LUA, pubsub, geo等),正在完善中
  • 对于单key更新,由于Tendis存储版内部并发控制,无法发挥多线程的优势,会退化为单线程,性能较低

Tendis存储版 vs 其他开源实现

  • 目前唯一完全兼容redis cluster访问和管理模式的类redis存储方案
  • 完善的运维和管理指令,infoslaveof等管理指令完全兼容
  • 命令兼容度高,几乎所有命令和redis语义保持一致
  • 强大的数据搬迁能力,支持数据在节点中的随意搬迁,不影响原服务。
  • 强大的集群自治管理能力,支持自动failover,故障自动恢复等,运维成本低

Tendis存储版 vs Tendis SSD

Tendis SSD是第一代tendis,基于redis 2.8.17实现,是一个单线程的实现方案。

优点:

  • 更好的兼容性,支持更多的redis命令
  • 多线程架构,解决tendis ssd由于单线程导致的抖动问题
  • 单独的过期数据线程池,解决原来tendis ssd处理过期数据效率太低的问题
  • 单独的命令处理线程池,解决由于单个操作耗时过程导致全局阻塞的问题(例如删除大key)
  • 更强大的复制能力,全量数据支持内存侧完成传输,binlog自动为slave保留,无需额外配置。slave断开自动重连
  • 更强大的集群自治能力,兼容redis cluster所有功能,内核侧完成节点发现,故障探测,failover等功能,基本实现免人工操作。
  • 支持hashtag,使用hashtag支持多key命令,例如 rpoplpush list1{1} list2{1}
  • 更强大的数据搬迁能力,支持部分数据节点间随意搬迁
  • 更高的性能,得益于多线程,对比单进程tendis ssd,单进程性能提升6倍(30WQPS vs 5wQPS)
  • 更高的备份效率,支持checkpoint备份