Cache探秘-Tair&Redis对比

本文探讨了Redis和Tair在适应场景上的差异,指出Redis适合使用复杂数据结构且延迟敏感的服务,而Tair则适用于对数据丢失零容忍及数据量过大的场景。在不适用的场景上,Redis在数据量过大时显得资源浪费,Tair不适用于有大量map/set元素的服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

* Redis
    http://www.redis.net.cn/
    http://doc.redisfans.com/
* Tair
    http://code.taobao.org/p/tair/wiki/index/

适应场景

Redis

适用

  1. 需要使用复杂数据结构(map, set),map/set中元素很多(1000以上)
  2. 延迟敏感服务

不适用

  1. 数据量超过600GB(数据太多,全内存太浪费资源)
  2. 需要多语言客户端支持

Tair

适用

  1. 不能容忍数据丢失
  2. 数据量大,内存放不下的服务

不适用

  1. 使用复杂数据结构(map/set),map/set中元素很多(1000以上)

详细对比

对比维度具体参数RedisRedis ClusterTair
访问模式支持Value大小理论上不超过1GB(建议不超过1MB)理论上不超过1GB(建议不超过1MB)256M(更大value还需要测试)
访问模式支持Value结构byte[]/list/map/setbyte[]/list/map/set(1)kv/map/list(2)支持big_list(list无长度限制)(3)支持创建schema,cmd query
访问模式支持的总数据量1000+instancescale out,理论上总数据量无限制
访问模式适宜的读写比存内存型,均适合存内存型,均适合支持多引擎,适宜各种比例的读写。读多写少(mdb+leveldb),读少写多(leveldb)。
访问模式数据是否可改写YY支持
访问模式是否支持Scan/Range Query不支持,并且不支持merge operations支持scan;支持range query
访问模式CAPCP 用户可配置,CP或AP
访问模式语言支持主流语言主流语言,目前java、ruby可用php,restful,java,c/c++
访问模式数据自动过期支持支持支持
访问性能点写latency虚机上平均1~2ms虚机上平均1~2ms5~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(延迟不会随单机数据容量增加而增加)
可运维性可扩展性(自动扩容、在线扩容)支持水平扩展在不停读和写的服务下自动扩容
可运维性可用性(是否有单点、数据迁移/单机出错时是否会有服务中断、过载保护、慢查询保护)使用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行左右

本文首发在 高广超的简书博客 转载请注明!

image.png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值