适应场景
Redis
适用
需要使用复杂数据结构(map, set),map/set中元素很多(1000以上)
延迟敏感服务
不适用
数据量超过600GB(数据太多,全内存太浪费资源)
需要多语言客户端支持
Tair
适用
不能容忍数据丢失
数据量大,内存放不下的服务
不适用
使用复杂数据结构(map/set),map/set中元素很多(1000以上)
详细对比
1.访问模式
具体参数 | Redis | Redis Cluster | Tair |
---|---|---|---|
支持Value大小 | 理论上不超过1GB(建议不超过1MB) | 理论上不超过1GB(建议不超过1MB) | 256M(更大value还需要测试) |
支持Value结构 | byte[]/list/map/set | byte[]/list/map/set | (1)kv/map/list(2)支持big_list(list无长度限制)(3)支持创建schema,cmd query |
支持的总数据量 | 1000+instance | scale out,理论上总数据量无限制 | |
适宜的读写比 | 存内存型,均适合 | 存内存型,均适合 | 支持多引擎,适宜各种比例的读写。读多写少(mdb+leveldb),读少写多(leveldb)。 |
数据是否可改写 | Y | Y | Y |
是否支持Scan/Range Query | 不支持,并且不支持merge operations | 支持scan;支持range query | |
CAP | CP | 用户可配置,CP或AP | |
语言支持 | 主流语言 | 主流语言,目前java、ruby可用 | php,restful,java,c/c++ |
数据自动过期 | 支持 | 支持 | 支持 |
2.访问性能
具体参数 | Redis | Redis Cluster | Tair |
---|---|---|---|
点写latency | 虚机上平均1~2ms | 虚机上平均1~2ms | 5~8ms(write through),1ms左右(write back) |
点写吞吐率 | 一个instance 5w,单机器整体性能根据cpu来决定 | 一个instance 5w,单机器整体性能根据cpu来决定 | 受限网卡带宽瓶颈(100MB),单机纯内存8w~10w qps(key+value=1k) |
批量写吞吐率 | 受限网卡带宽瓶颈 | 受限网卡带宽瓶颈 | 受限网卡带宽瓶颈(100MB),单机纯内存8w ~10w batch/s(batch=10keys,key+value=100,batch_size=1k) |
读latency | 虚机上平均1~2ms | 虚机上平均1~2ms | 同机房内存1ms,磁盘5-8ms(延迟不会随单机数据容量增加而增加) |
3.可运维性
具体参数 | Redis | Redis Cluster | Tair |
---|---|---|---|
可扩展性(自动扩容、在线扩容) | 支持水平扩展 | 在不停读和写的服务下自动扩容 | |
可用性(是否有单点、数据迁移/单机出错时是否会有服务中断、过载保护、慢查询保护) | 使用keepalived或者官方哨兵来保持高可用 | 无单点 | (1)无单点(2)不中断服务(3)有过载保护(4)无慢查询保护,但有慢查询递归树监控 |
可靠性(如何防止数据丢失,包括机器断电、硬盘损毁等情形下) | 0~N个数据slave备份(实际使用情况基本是0个备份) | 0~N个数据slave备份(实际使用情况基本是0个备份) | (1)多机数据冗余(2)断电数据不丢失,重放redo log(3)数据完整性crc校验(防止磁盘损坏) |
数据可靠性 | 用户可选是否开启持久化 | 用户可选是否开启持久化 | 强,有持久存储,一般不会丢失数据 |
多副本 | 支持(副本平时可读) | 支持(副本平时可读) | 支持(副本平时不提供读写) |
副本一致性 | 弱 | 弱 | 可根据业务需求配置强一致/弱一致 |
持久化 | 支持。持久化的数据是用于重启后的数据恢复。Redis是一个内存数据库,无论是RDB还是AOF,都只是其保证数据恢复的措施。 | 支持。持久化的数据是用于重启后的数据恢复。Redis是一个内存数据库,无论是RDB还是AOF,都只是其保证数据恢复的措施。 | 支持 |
对业务混合部署的支持(性能隔离) | 进程级隔离(特殊处理可以到机器间隔离) | 进程级隔离(特殊处理可以到机器间隔离) | 硬软隔离:(1)支持不同group的业务混步(2)支持同一个group业务混步(通过名字空间隔离),支持网络和内存的隔离。 |
对访问权限的可控制性 | web操作管理员授权.api操作支持鉴权和非鉴权两种模式 | web操作管理员授权.api操作支持鉴权和非鉴权两种模式 | 机器粒度的白名单管理 |
实现语言、代码量 | JAVA,java客户端14000行、管理中心22000行 | JAVA,java客户端14000行、管理中心22000行 | 核心代码c++,10w行左右 |
作者:高广超
链接:https://www.jianshu.com/p/cecab7c26fd8
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。