DAS支持缓存分析功能,通过分析Redis的备份文件,帮助您确认Redis内存占用以及大Key的分布情况,减少因Key倾斜引发的内存不足、性能下降等问题。针对Redis社区版集群架构,使用缓存分析功能还能显示各个节点内存占用的统计情况。
使用限制
- 目标Redis实例已接入DAS,且实例接入状态为连接正常。
- 云数据库Redis仅支持社区版,且引擎版本需为2.8及以上。
- 目前Redis实例暂不支持西南1(成都)、英国(伦敦)、德国( 法兰克福)、 印度(孟买)这些地域。
操作步骤
常见问题
- Q:为什么缓存分析结果展示的Key内存占有会比实际使用的内存小?
A:因为缓存分析结果实际只是解析了Key和对应value在RDB中序列化后占用的大小,这个只占用了used_memory中的一部分,used_memory还包含了如下部分:
- Key和value所对应的struct和指针大小。在jemalloc分配后,字节对齐部分所占用的大小也没计算在used_memory中,例如在2.5亿Key的数量下,struct、指针、字节对齐这三部分的大小加起来约有2~3 GB。
- 客户端输出缓冲区、查询缓冲区、AOF重写缓冲区和主从复制的backlog,这些也没计算到缓存分析中。
- Q:Redis缓存分析的前缀分隔符是什么?
A:目前Redis缓存分析的前缀分隔符是按照固定的前缀
:;,_-+@=|#
区分的字符串。 - Q:为什么Redis缓存分析中String类型Key的元素数量和元素长度是一样的?
A:在Redis缓存分析中,针对String类型的Key,其元素数量就是其元素长度。
- Q:出现如下报错时,该如何处理?
decode rdbfile error: rdb: unknown object type 116 for key XX
A:出现该报错是指Redis实例里面存在非标准的Bloom结构,您可以把这些Bloom结构的Key删掉,或者将Redis实例升级到Redis企业版(Tair),并将非标准的Bloom结构修改为TairBloom结构。
- Q:为什么Stream数据结构的缓存分析结果是实际值的数倍?
A:Stream数据结构底层使用基数树(Radix Tree)和紧凑列表(listpack),数据结构复杂。缓存分析功能目前无法精确获得此类复杂数据结构的内存占用情况,只能进行估算,因此缓存分析结果存在偏差。说明 缓存分析结果的偏差仅为数据统计偏差,不影响数据库实例的功能。