高性能是Redis最大的特点,保障Redis的性能是Redis使用过程中的必要举措。可能导致Redis性能问题的因素各种各样,而热点Key是其中最常见的因素之一。找出热点Key有利于进一步处理问题,本文介绍利用Redis 4.0版本新增特性查询热点Key的方法。

说明 云数据库Redis版已支持通过审计日志直接查询热点key,可以帮助您更方便、精准地查询到Redis服务中的热点key,详情请参见 查询历史热点Key

背景信息

Redis 4.0新增了allkey-lfuvolatile-lfu两种数据逐出策略,同时还可以通过OBJECT命令来获取某个key的访问频度,如下图所示。

Redis 原生客户端也增加了--hotkeys选项,可以快速帮您找出业务中的热点Key。

说明 本文旨在介绍热点Key发现方法,从而优化Redis的性能,因此适用于已经拥有一定的云数据库Redis版使用基础,且在寻求进阶技巧的用户。如果您刚开始接触Redis,建议先阅读 产品简介快速入门

前提条件

  • 拥有与Redis实例互通的ECS实例;
  • ECS中已经安装了Redis 4.0以上版本;
    说明 目的为使用其自带的工具redis-cli。
  • 云数据库Redis版实例的maxmemory-policy参数设置为volatile-lfuallkeys-lfu
    说明 参数修改的方法请参见 参数说明及设置方法

操作步骤

  1. 在有业务进行时,使用以下命令查询热点Key。
    redis-cli -h r-***************.redis.rds.aliyuncs.com -a <password> --hotkeys
    说明 本文使用 redis-benchmark模拟业务中大量写入的场景。
    表 1. 选项说明
    名称 说明
    -h 指定Redis的连接地址。
    -a 指定Redis的认证密码。
    --hotkeys 用来查询热点Key。

执行结果

执行命令后得到的结果示例如下:

执行结果的 summary部分即是分析得出的热点Key。