【Redis】如何识别Redis键空间中访问频率低的Key
【摘要】 背景介绍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执行的所有命令进行监控,并且输出在标准输出流中。如下图所示:
操作流程:
- 使用redis-cli进行monitor,可以看到DCS服务发放的Redis实例会定期执行info all命令进行监控数据采集
- 使用WebCli进行数据操作(get,set命令)
- Monitor可以获取到Redis-Server执行的所有命令。
由上面的展示可以看出来,我们可以使用Monitor + grep命令来获取后一段时间内,Redis-Server上是否对于某个Key有进行过何种类型的操作。
redis-cli -h {ip} -p {port} -a {password} monitor | grep -i {key_name}
示例如下:
- 方案优点:
- 使用简单,不依赖于其他配置或工具
- 方案缺点:
- 实例执行Monitor时会造成性能下降,Monitor进程不及时关闭可能会造成进程/链接阻塞,最终影响服务端处理请求(内存撑爆等)
- 对于多分片的实例(Cluster或Proxy集群,存在多个主节点)的场景,每个Monitor只能监控一个Master(分片),如果需要监控整个集群,则需要对于每个Master节点都需要执行Monitor命令
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)