Redis中有大量未设置过期时间的缓存应该如何处理?
admin
2024-01-30 13:58:20

问题

Redis集群因为开发人员问题,放入过多的没有设备过期时间的缓存,导致Redis内存使用过高。

解决方案

  1. 把过期的KEY找出来,批量删除。
  • 安装Redis-cli (生产环境大部分都是集群,或者云服务,不要在安装Redis的机器上操作),下面是Centos系统操作脚本
    # 安装基础依赖
    yum install -y gcc wget
    # 下载包
    wget http://download.redis.io/redis-stable.tar.gz
    # 解压
    tar xvzf redis-stable.tar.gz
    cd redis-stable
    # 编译
    make redis-cli
    # 
    sudo cp src/redis-cli /usr/local/bin/
    
  • 执行批量删除脚本
     redis-cli -h host -p port -a password  keys "ABC*" |xargs  redis-cli -h host -p port -a password  keys "ABC*" del
    
    -h Redis服务器地址
    -p Redis服务端口
    -a Redis服务密码
    keys 查询key
  1. 业务切换Redis DB到其他逻辑库,把有问题的库的数据全部清除。
flushdb   // 清除当前数据库的所有keys
flushall    // 清除所有数据库的所有keys
  1. 修改程序,设置Key过期时间,并且设置Redis淘汰策略为allkeys-lru,这个需要自己评估一下Redis是否有特殊用法。
    volatile-lru,针对设置了过期时间的key,使用lru算法进行淘汰。
    allkeys-lru,针对所有key使用lru算法进行淘汰。
    volatile-lfu,针对设置了过期时间的key,使用lfu算法进行淘汰。
    allkeys-lfu,针对所有key使用lfu算法进行淘汰。
    volatile-random,从所有设置了过期时间的key中使用随机淘汰的方式进行淘汰。
    allkeys-random,针对所有的key使用随机淘汰机制进行淘汰。
    volatile-ttl,删除生存时间最近的一个键。
    noeviction(默认),不删除键,值返回错误。

相关内容

热门资讯

穿越天山遇见四季童话:新疆深度... 穿越天山遇见四季童话:新疆深度旅行指南与秘境故事 序章:一封来自西域的情书 每年六月,当伊犁河谷的薰...
从戈壁到花海:一位新疆本地向导... 从戈壁到花海:一位新疆本地向导的四季旅行手记 在新疆生活了近二十年,我依然记得第一次被这片土地震撼的...
穿越军 - 穿越中国亲子挑战赛... 以前总带孩子去各地旅游,打卡景点、吃美食,回来之后孩子除了照片,什么都没留下,直到带他参加穿越军亲子...
2026最新山东旅行社综合实力... 随着 2026 年旅游市场持续升温,山东凭借 "一山一水一圣人" 的独特魅力和丰富的文旅资源,成为国...
二十年,再赴大熊山 人间忽晚,山河已秋。一别大熊山,已是整整二十载。 那时我匆匆登临,步履轻快,眼里只有山川壮阔、林木葱...