记一次 Redis 容量 超限的问题
运维告知 redis 使用异常
- 这台服务器的使用量其实并不大,当初设置256M的容量其实够用的
- 现在扩容到 2G , 现在就用到了1.71G
- 默认的配置
hz 10
maxmemory-policy volatile-lru
查看 redis 分区
- 由于本机没有可视化 redis 工具,只能上服务器查看信息
- 只能一个个分区去查看,查到 1 分区的时候 查看有大量的相同的前缀的key 是 string 类型的
- 查看了其中一个 key 的过期时间,算是1天的过期时间
- 询问其他同事,这个缓存作用,商量结果是 批量删除
批量删除
查询了资料,几乎是先模糊查询 所有对应的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
- -h 是我定义的redis地址
- -n 是分区1
- -L 是一次性删除的数 第一次我500删 但是嫌太慢了 改成1000
返回的信息
后续
由于 redis 删除 key 之后不会马上会释放内存,所以不会看到内存使用量马上下去
如果已经影响到系统内存使用了,也有下面三种方案:
- 可以通过 MEMORY PURGE命令进行内存整理。(瞬时,能稍微腾出rss内存空间)
- 开启activedefrag,热碎片整理。(会占用CPU,在主线程执行,可以设置CPU占用率)
- 重启。
结果
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: