Tair内存型(简称内存型)适合并发量大、读写热点多,对性能要求超过Redis开源版实例的场景。相比Redis开源版,内存型重点增强了多线程性能并集成多个自研扩展数据结构。
功能概述
类别 | 说明 |
兼容性 | 100%兼容原生Redis,无需修改业务代码,提供兼容Redis 7.0、兼容Redis 6.0与兼容Redis 5.0版本。 |
性能 |
|
同步模式 | 额外支持半同步模式,即客户端发起的更新在主节点执行完成后,主节点会将日志复制到备节点,待备节点确认接收后才返回信息给客户端,保证高可用切换后数据不丢失。 |
部署架构 | 支持标准、集群和读写分离部署架构。 |
数据结构模块集成 | 集成多个自研的Tair模块,包括exString(包含Redis String命令增强)、exHash、exZset、GIS、Bloom、Doc、TS、Cpc、Roaring、Search和Vector,扩展了Tair的适用性,同时降低了复杂场景下业务的开发难度,让您专注于业务创新。 |
企业级特性 |
|
数据安全 |
|
应用场景
适用于视频直播、电商秒杀和在线教育等场景,下面列举了内存型在4个典型场景中的应用。
场景1:使用Redis开源版实例在秒杀场景中构建缓存,部分热点Key的QPS要求高达20万以上,无法满足业务高峰期的需求。
采用内存型(标准架构)实例后,热门商品秒杀过程流畅,未发生性能问题。
场景2:在业务中使用Redis开源版集群实例,但在使用事务和Lua脚本功能时有一定的限制。
采用内存型实例后,在满足性能需求的同时消除了集群版的命令使用限制。
场景3:自建有一主多备的Redis服务,随着业务中访问量的不断提高,备节点数量也要随之增加,管理维护成本越来越高。
采用具备一个数据节点五个只读副本的内存型(读写分离架构)实例后,可以轻松应对百万级QPS的业务挑战。
场景4:自建有Redis集群来承担线上千万级QPS的业务压力。随着业务的发展,Redis分片数不断增加,管理维护成本居高不下。
采用内存型(集群架构)实例后,集群规模缩到原来的三分之一,管理维护成本大幅降低。
线程模型对比
Redis单线程模型
Redis开源版和原生Redis采用单线程模型,数据处理流程为:读取请求,解析请求,处理数据,发送响应。其中网络IO和请求解析占用了大部分的资源。
Tair内存型多线程模型
Tair内存型将服务各阶段的任务进行分离,通过多个线程并行处理各阶段任务,从而提高性能。
主线程:负责建立连接、启动其他线程、分发任务等。
IO线程:负责读取请求、解析命令、处理命令、发送响应等。Tair内存型最多支持4个IO线程并发运行。
辅助(BIO)线程:负责高可用探测、数据持久化、内存惰性回收、保活等。
Tair内存型对于通用的数据类型,例如String、List、Set、Hash、Zset、 Hyperloglog、Geo以及Tair扩展结构都有很好的加速效果。
区别于Redis 6.0的多线程(性能至多提升2倍,且CPU资源消耗高),内存型的Real Multi-IO能够彻底加速IO和命令执行,具备更高的抗连接冲击性,且可以线性地提升吞吐能力。
常见问题
Q:客户端不支持Tair扩展模块的命令怎么办?
A:您可以先在应用代码中定义需要使用的新模块命令,然后再使用这些命令,或者通过Tair客户端直接调用Tair扩展数据结构,更多信息,请参见Clients说明。