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(默认),不删除键,值返回错误。

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...