内存型

Tair内存型(简称内存型)适合并发量大、读写热点多,对性能要求超过Redis开源版实例的场景。相比Redis开源版,内存型重点增强了多线程性能并集成多个自研扩展数据结构。

功能概述

类别

说明

兼容性

100%兼容原生Redis,无需修改业务代码,提供兼容Redis 7.0兼容Redis 6.0兼容Redis 5.0版本。

性能

  • 采用多线程模型,性能约为同规格Redis开源版3倍,能够突破热点数据高频读写受到的性能限制。

  • 相比原生Redis,高QPS场景下响应时间更低,性能表现更佳。

  • 在大并发场景下运行稳定,可以极大地缓解突发大量请求导致的连接问题,从容应对业务高峰。

  • 全量同步和增量同步在IO线程中进行,提高同步速度。

同步模式

额外支持半同步模式,即客户端发起的更新在主节点执行完成后,主节点会将日志复制到备节点,待备节点确认接收后才返回信息给客户端,保证高可用切换后数据不丢失。

部署架构

支持标准、集群和读写分离部署架构。

数据结构模块集成

集成多个自研的Tair模块,包括exString(包含Redis String命令增强)、exHashexZsetGISBloomDocTSCpcRoaringSearchVector,扩展了Tair的适用性,同时降低了复杂场景下业务的开发难度,让您专注于业务创新。

说明
  • 内存型(兼容Redis 7.0、6.0)兼容所有数据结构。

  • 内存型(兼容Redis 5.0)兼容除TairVector以外的所有数据结构。

企业级特性

  • 通过数据闪回按时间点恢复数据:最长支持将实例恢复至过去7天内的任意时间点。

  • 代理查询缓存:代理节点缓存热点Key对应的请求和查询结果,提高热点查询效率。

  • 全球多活:可轻松实现异地多个站点同时对外提供服务的业务场景。支持异地多个实例的数据同步服务,适用于异地多活、数据容灾等场景。

  • Tair双向同步:支持双向同步,适用于异地多活、数据容灾等场景。

数据安全

应用场景

适用于视频直播、电商秒杀和在线教育等场景,下面列举了内存型在4个典型场景中的应用。

  • 场景1:使用Redis开源版实例在秒杀场景中构建缓存,部分热点KeyQPS要求高达20万以上,无法满足业务高峰期的需求。

    采用内存型(标准架构)实例后,热门商品秒杀过程流畅,未发生性能问题。

  • 场景2:在业务中使用Redis开源版集群实例,但在使用事务和Lua脚本功能时有一定的限制。

    采用内存型实例后,在满足性能需求的同时消除了集群版的命令使用限制。

  • 场景3:自建有一主多备的Redis服务,随着业务中访问量的不断提高,备节点数量也要随之增加,管理维护成本越来越高。

    采用具备一个数据节点五个只读副本的内存型(读写分离架构)实例后,可以轻松应对百万级QPS的业务挑战。

  • 场景4:自建有Redis集群来承担线上千万级QPS的业务压力。随着业务的发展,Redis分片数不断增加,管理维护成本居高不下。

    采用内存型(集群架构)实例后,集群规模缩到原来的三分之一,管理维护成本大幅降低。

线程模型对比

Redis单线程模型

Redis开源版和原生Redis采用单线程模型,数据处理流程为:读取请求,解析请求,处理数据,发送响应。其中网络IO和请求解析占用了大部分的资源。

image

Tair内存型多线程模型

image

Tair内存型将服务各阶段的任务进行分离,通过多个线程并行处理各阶段任务,从而提高性能。

  • 主线程:负责建立连接、启动其他线程、分发任务等。

  • IO线程:负责读取请求、解析命令、处理命令、发送响应等。Tair内存型最多支持4IO线程并发运行。

  • 辅助(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说明