记一次 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 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

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

5年前 评论
CrazyZard

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

5年前 评论

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