【Redis】如何识别Redis键空间中访问频率低的Key

举报
四月牧歌 发表于 2022/06/01 20:18:08 2022/06/01
【摘要】 背景介绍Redis是一种非常流行的内存型KV数据库。在Redis的使用过程中,经常会碰到这样一个问题,当前的存储空间中有大量的Key,在系统经过长时间的运行和业务程序的版本迭代之后,在存储空间中部分Key可能由于中间的业务变化或者调整,部分数据已经没有业务使用,但是无法判断该Key是否还有业务在使用。如何对已经废弃不使用的Key进行判断并且定期清除,是Redis实例使用过程中常见的问题。 ...

背景介绍

Redis是一种非常流行的内存型KV数据库。在Redis的使用过程中,经常会碰到这样一个问题,当前的存储空间中有大量的Key,在系统经过长时间的运行和业务程序的版本迭代之后,在存储空间中部分Key可能由于中间的业务变化或者调整,部分数据已经没有业务使用,但是无法判断该Key是否还有业务在使用。如何对已经废弃不使用的Key进行判断并且定期清除,是Redis实例使用过程中常见的问题。

方案1:Monitor命令

Redis中提供了一个Monitor命令,使用参考:Monitor Command,该命令一般使用redis-cli工具执行如何安装redis-cli工具,执行之前需要提前获取目标实例(Redis)的密码。

Monitor命令执行时,会建立一个TCP长链接,并且将对应Redis-Server执行的所有命令进行监控,并且输出在标准输出流中。如下图所示:
image.png
操作流程:

  1. 使用redis-cli进行monitor,可以看到DCS服务发放的Redis实例会定期执行info all命令进行监控数据采集
  2. 使用WebCli进行数据操作(get,set命令)
  3. Monitor可以获取到Redis-Server执行的所有命令。

由上面的展示可以看出来,我们可以使用Monitor + grep命令来获取后一段时间内,Redis-Server上是否对于某个Key有进行过何种类型的操作。

redis-cli -h {ip} -p {port} -a {password} monitor | grep -i {key_name}

示例如下:
image.png

  • 方案优点:
    • 使用简单,不依赖于其他配置或工具
  • 方案缺点:
    • 实例执行Monitor时会造成性能下降,Monitor进程不及时关闭可能会造成进程/链接阻塞,最终影响服务端处理请求(内存撑爆等)
    • 对于多分片的实例(Cluster或Proxy集群,存在多个主节点)的场景,每个Monitor只能监控一个Master(分片),如果需要监控整个集群,则需要对于每个Master节点都需要执行Monitor命令
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。