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存储方案 - 完善的运维和管理指令,
info
,slaveof
等管理指令完全兼容 - 命令兼容度高,几乎所有命令和
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备份