【缓存】3-Redis过期策略

avatar 2020年11月26日18:10:05 0 549 views

redis会将每个设置过期时间的key放到一个独立的字典中,以后会定时遍历这个字典来删除到期的key。

除了使用定时遍历之外,还会使用惰性删除,即访问的时候检查key是否过期,如果过期了则删除。

通过2种策略配合使用,Redis能保持高吞吐量和避免内存浪费。

 

一、定时删除

Redis每秒进行10次(可以修改redis.conf 里的 hz参数)扫描一次过期字典,并不是遍历所有的key。

  1. 从过期字段中随机选择20个key
  2. 删除这20个key中已经过期的key
  3. 如果过期的key比例超过1/4,则重复步骤1

 

同时,避免同一段时间大量key过期,循环时间太久,算法还增加了扫描时间上限,默认是不超过25ms。

 

 

二、惰性删除

定时删除策略中,从删除方法来看,必然会导致有key过期了但未从redis中删除的情况。

面对这种情况,redis在操作一个key时,会先判断这个值是否过期,若已过期,则删除该key;若未过期,则进行后续操作。

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
可以匿名评论或者登录后台评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0