【面试核心】Redis6的key过期时间删除策略你知道多少

DBC 1.6K 0
  • 背景
    • redis的key配置了过期时间,这个是怎么被删除的
    • redis数据明明过期了,怎么还占用着内存?
    • Redis 就只能用 10G,你要是往里面写了 20G 的数据,会发生什么?淘汰哪些数据

     

  • redis key过期策略
    • 定期删除+惰性删除。

       

  • Redis如何淘汰过期的keys: set name xdclass 3600

     

    • 定期删除:
      • 隔一段时间,就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除,
      • 定期删除可能会导致很多过期 key 到了时间并没有被删除掉,那咋整呢,所以就是惰性删除

       

    • 惰性删除 :
      • 概念:当一些客户端尝试访问它时,key会被发现并主动的过期
      • 放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键

         

     

  • Redis服务器实际使用的是惰性删除和定期删除两种策略:通过配合使用这两种删除策略,服务器可以很好地在合理使用CPU时间和避免浪费内存空间之间取得平衡。

 

  • 问题
    • 如果定期删除漏掉了很多过期 key,然后你也没及时去查,也就没走惰性删除,此时会怎么样?
    • 如果大量过期 key 堆积在内存里,导致 redis 内存块耗尽了,就需要走内存淘汰机制

 

  • 设计缓存中间件:可以参考redis的key过期淘汰方式和内存不足淘汰方式

发表评论 取消回复
表情 图片 链接 代码

分享