探索redis数据过期策略

为什么要处理数据过期

1.过期设置为程序逻辑的一部分,所以为了保证逻辑正确(不读取到过期数据),不得不对缓存做数据过期处理
2.过期数据,对业务来说已是无用数据,但是却仍然占有服务资源(主要是内存和磁盘),故处理过期数据,将其删除可以使服务资源得到释放

处理过期数据的常用策略

策略 说明 优点 缺点
定时删除 根据键的过期时间设置定时器,触发超时及删除对应键 删除及时,内存友好 在内存不紧张,cpu紧张的情况下,cpu不友好
惰性删除 程序在取键时才对键进行过期检查 cpu友好,只有在取键时才可能会触发删除当前键 内存不友好
定期删除 每隔一段时间执行一次限时限量的批量删除 相对中性,不像定时删除那样可能短时间占用大量cpu,也没有惰性删除浪费内存空间多 -

redis同时采用定期删除和惰性删除策略: 使用定期策略可以更平滑的利用cpu和内存资源,但是会存在过期数据失效不及时的问题。用惰性删除加以辅助便可达到定期删除下访问实时失效的效果

redis惰性删除

redis在客户端获取数据时,首先判断数据是否设置过期时间,如果设置了过期时间,且当前时间大于过期时间则删除对应的key

核心代码: db.c:expireIfNeeded函数中

//返回0未过期、大于0过期
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值