Redis中有大量未设置过期时间的缓存应该如何处理?

问题

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(默认),不删除键,值返回错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值