云数据库Redis企业版支持两种系列类型:性能增强型和混合存储型。与将所有数据保存在内存中的高性能内存型实例不同,云Redis企业版混合存储型实例整合了内存和磁盘二者的优势,在提供高速数据读写能力的同时满足了数据持久化的需求。

简介

Redis混合存储型实例是阿里云自主研发的兼容Redis协议的混合存储产品,使用磁盘存储全量数据,将热数据保存到内存中供应用快速读写。在保证常用数据访问性能不下降的基础上,Redis混合存储型实例能够大幅度降低用户成本,实现性能与成本的平衡,同时突破了内存大小对Redis单实例数据量的限制。

图 1. Redis混合存储型实例架构图
Redis混合存储型型实例架构图 混合存储型实例_云数据库Redis企业版_产品简介_云数据库 Redis 版 阿里云技术文档

适用场景

  • 视频直播

    视频直播类业务往往存在大量热点数据,大部分的请求都来自于热门的直播间。使用Redis混合存储型实例,内存中保留热门直播间的数据,不活跃的直播间数据被自动存储到磁盘上,可以达到对有限内存的最佳利用效果。

  • 电子商务

    电商类应用往往有大量的商品数据。使用Redis混合存储型实例可以轻松突破内存容量限制,将大量的商品数据都存储到Redis混合存储型实例中。在正常业务请求中,活跃的商品数据会保留在内存,不活跃的商品数据会逐渐交换到磁盘上,从而解决内存不够的问题。

  • 在线教育

    在线教育类的场景有大量的课程、题库以及师生交流信息等数据,通常只有热门课程和最新题库会被频繁访问。使用Redis混合存储型实例,将所有课程信息存储到磁盘,访问量大的课程和题库数据存储到内存并常驻内存,保证高频访问数据的读写性能,实现高性能与高性价比的有机结合。

典型业务场景的示例如下:

  • 场景1:用户使用开源Redis集群存储了100GB的数据,但高峰期QPS不到2万,其中80%的数据的访问频率很低。使用32GB内存加128GB磁盘的云Redis企业版混合存储型实例后,节省了近70GB的内存空间,存储成本下降50%以上。
  • 场景2:用户在IDC自建Pika实例来解决Redis存储成本高的问题。总数据量约400GB,其中访问频率高的数据仅占10%左右,并且集群的运维成本居高不下。使用64GB内存加512GB磁盘的云Redis企业版混合存储型实例后,既免除了繁重的运维工作,又保障了服务质量。

选型指南-场景

云Redis企业版混合存储型实例和基于纯内存的社区版实例各有其适用的场景,下表从四个角度帮助您做出合理的选择。
场景分类 企业版混合存储型实例 社区版实例
数据量与预算
  • 数据量大,有降低成本需求;
  • 正在使用Pika、SSDB或者ARDB等;
  • 正在使用大容量的主备或者集群Redis。
数据量小,或者预算充足且暂时无需降低存储成本。
冷热数据分布 业务中冷热数据区分明显。
说明 冷数据即访问频率较低的数据。
业务中的数据访问完全随机。
冷热数据的性能和延迟要求
  • 热数据访问场景对性能要求很高;
  • 冷数据访问场景对延迟的敏感度不高。
  • 业务对性能的要求极高;
  • 业务对延迟的敏感度高。
大key的访问规律
  • 业务中没有大key;
  • 业务中有大key,且大key的访问率高,需要常驻内存;
  • 业务中有大key,但大key的访问率低,对延迟不敏感。
业务中有大key,访问无规律,对延迟敏感度高。

选型指南-规格

创建Redis混合存储型实例时,您需要选择合适的内存配置与磁盘配置:内存决定能存储的热数据量,磁盘决定能存储的数据总量。云数据库Redis版将根据您选择的配置调配合适的CPU资源创建实例。 例如,选择64G内存256G磁盘主从版,则实例最多能存储256 GB的数据,在这些数据中,有64 GB可以缓存到内存中。

混合存储型实例的详细规格请参见标准版-混合存储

说明
  • CPU核心数暂不支持自定义。
  • 内存和磁盘中会保存key对应的元信息,其中包含key的过期时间、LRU时钟、类型等,因此选型时需要留有一定的额外容量,请参见下方的详细说明。
  • 内存选型

    为了更好地兼容原生Redis协议,Redis混合存储实例的数据中,所有的key都必须常驻内存,key的value会被云数据库Redis版根据冷热度自动保存在内存或磁盘中。因此,创建实例时选择的内存容量需能储存所有的key及其对应的元信息。下表是基于key总数的选型建议。

    Key总数 推荐的内存规格
    <2千万 64 GB、32 GB、16 GB
    2千万~5千万 64 GB、32 GB
    5千万~1亿 128 GB、64 GB、32 GB
    >1亿 128 GB、64 GB
    说明 内存容量决定创建实例时分配到的CPU资源,因此内存容量越大性能越高。
  • 磁盘选型

    磁盘中保存Redis的所有数据,每个key都会产生元信息,占用额外的空间,因此选择的磁盘容量建议为实际需求的1.2~1.5倍。

购买方式

详细步骤请参见步骤1:创建实例

实例性能

Redis混合存储型实例的性能与实例规格以及业务中数据被访问的概率有很大的关系:实例规格越高,内存数据的访问比重越高,性能就越强。理想的场景中,所有的访问都命中内存,此时实例性能与Redis高性能内存型实例基本一致;反之,在内存命中率较低,甚至所有访问都需要从磁盘读取数据的情况下,混合存储型实例的性能将达到低谷。

在如下的三个测试场景中,Redis实例储存了总数2千万的key,value大小均为1 KB。测试方式为使用GET命令获取value,三个场景的访问目标不同。

表 1. 性能测试结果
测试场景 高性能内存型实例QPS 混合存储型实例QPS
随机访问 12.3万 1.5万
高斯分布80%的概率访问20%的key 12.0万 5.4万
高斯分布99%的概率访问1%的key 13.5万 11.4万

命令使用限制

Redis混合存储型实例兼容大多数的原生Redis命令,为了保证服务性能,部分命令的使用受到限制,详情请参见混合存储型实例命令限制

常见问题

磁盘还有剩余容量,但内存满了,写入时报错,提示OOM error,怎么解决?

答:请参见下表中的原因分析和解决方案介绍。

原因 解决方案
内存规格较低,容量不足以储存所有key及其元信息。 变更配置,提高内存容量。
小于96 Byte的value即使保存到磁盘也会在内存中生成元信息,占用与value本身相当的空间,因此Redis混合存储实例目前不会将这类value保存到磁盘。 如果这类value总数很多,也会占用较大内存。
  • 变更配置,提高内存容量。
  • 使用Redis高性能内存型实例。