Redis学习(十五)Redis删除策略

删除策略删除的是什么数据

删除的是过期数据,设置期限且时间已经到期的数据

查看Redis中数据的状态

ttl key

结果:

  • XX:具有时效性的数据
  • -1:永久保存的数据
  • -2:已经过期的数据已经被删除的数据从未定义的数据

为什么要引入删除策略

如果我们监控每一条数据的时间到期,这样的守护进程会占用CPU使Redis的性能下降,如果我们不处理过期数据,也会导致数据过多占用内存导致Redis将内存撑爆宕机,所以删除策略的目标并不是要完全的删除过期数据,而是在删除过期数据和CPU性能之间寻找一种平衡

Redis数据删除策略

  1. 定时删除
  2. 惰性删除
  3. 定期删除

定时策略

Redis设置一个带有时限的key,当过期时间到达时,Redis会立即删除数据

定时策略特点

用处理器性能换内存空间

惰性删除

Redis设置一个带有时限的key,当过期时间到达时,Redis并不会立即删除数据

当下一次访问数据时,如果该数据没有到达过期时间,则返回数据

如果该数据到达过期时间,Redis会先删除该数据,然后返回不存在

惰性删除的特点

拿存储空间换处理器性能

定期删除

两个指标

  1. server.hz
  2. W

server.hz

用来表示每秒执行多少次检测方法

W

每个库随机挑选W个数据进行检测,如果超过25%的key过期,则再次循环该过程

设置ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP为W的值

主要流程

Redis每秒执行server.hz次方法进行检测过期数据,检测方法会对所有的库中expires存储块进行检查并删除,每个expires中随机挑选W个数据进行检测,如果超过25%的key过期,则再次循环该过程,如果没有超过25%的key过期,则到下一个expires存储块进行检查,检查时会有current_db字段对当前处理的expires进行判断

什么是数据逐出策略

当Redis剩余内存无法不满足加入数据最低内存要求,那么就会以一定的策略释放部分内存,本方法会反复执行,当Redis确认无法清理内存时,则抛出异常OOM(Out Of Memory)

逐出策略相关配置

//    最大可使用内存
maxmemory 

//    每次选取待删除数据的个数(随机选取数据的方式作为待检测数据)
maxmemory-samples

//    删除策略
maxmemory-policy

逐出策略

  • 检测容易过期的数据
  1. volatile-lru(建议): 挑选最近最少使用的数据淘汰(长时间不用的)
  2. volatile-lfu: 挑选最近使用次数最少的数据淘汰
  3. volatile-ttl: 挑选将要过期的数据淘汰
  4. volatile-random: 随机选择数据淘汰
  • 检测全库数据
  1. allkeys-lru:挑选最近最少使用的数据淘汰(长时间不用的)

  2. allkeys-lfu:挑选最近使用次数最少的数据淘汰

  3. allkeys-random:随机选择数据淘汰

  • 放弃数据驱逐
  1. no-enviction: 禁止驱逐数据

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值