记一次 Redis 容量 超限的问题

运维告知 redis 使用异常

  • 这台服务器的使用量其实并不大,当初设置256M的容量其实够用的
  • 现在扩容到 2G , 现在就用到了1.71G
  • 默认的配置 hz 10 maxmemory-policy volatile-lru

查看 redis 分区

  • 由于本机没有可视化 redis 工具,只能上服务器查看信息
  • 只能一个个分区去查看,查到 1 分区的时候 查看有大量的相同的前缀的key 是 string 类型的

记一次 redis 容量 超限的问题

  • 查看了其中一个 key 的过期时间,算是1天的过期时间
    记一次 redis 容量 超限的问题
  • 询问其他同事,这个缓存作用,商量结果是 批量删除

批量删除

查询了资料,几乎是先模糊查询 所有对应的key 然后在删除,我选出其中一种方法

[root@lsk root]# redis-cli  -h redis.serv -a 'sercet' -n 1 --scan --pattern "manage.session.*" | xargs -L 1000 redis-cli -h redis.serv -a  'sercet' -n 1  del
  1. -h 是我定义的redis地址
  2. -n 是分区1
  3. -L 是一次性删除的数 第一次我500删 但是嫌太慢了 改成1000

返回的信息
记一次 redis 容量 超限的问题

后续

由于 redis 删除 key 之后不会马上会释放内存,所以不会看到内存使用量马上下去
如果已经影响到系统内存使用了,也有下面三种方案:

  1. 可以通过 MEMORY PURGE命令进行内存整理。(瞬时,能稍微腾出rss内存空间)
  2. 开启activedefrag,热碎片整理。(会占用CPU,在主线程执行,可以设置CPU占用率)
  3. 重启。

结果

记一次 redis 容量 超限的问题

本作品采用《CC 协议》,转载必须注明作者和本文链接
快乐就是解决一个又一个的问题!
CrazyZard
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

redis 不是有自己的清楚策略吗?

4年前 评论
CrazyZard

@Ali 但是要清楚数据为啥会激增呢?

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!