redis过期策略

  • redis过期策略
    • 定期删除
      • 缺省情况下,redis每隔100ms就随机选取一些设置了过期时间的key来检查,看其是否过期,如果过期了就删除。那么这里就会存在一个问题,假如redis中存在这100万个设置了超时时间的key,那么redis如果每隔这么短的时间去就检查,肯定会崩掉,所以redis才会定期抽选一些来检查。
    • 惰性删除
      • 如果定期没有抽取到已经过期的key,那么在取出这个key的时候,redis会检查,如果超时了,也会将其删除
    • 内存淘汰机制
      • 如果上面两种情况都同时没命中,那么大量过期key堆积在内存中,就导致redis内存块耗尽。所以这里就会走内存淘汰机制
        • noeviction:当内存不足以容纳新写入数据时,新写入操作会报错,很少用
        • allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key,最常用
        • llkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key,很少用
        • volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key
        • volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 key
        • volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 key 优先移除
posted @ 2020-04-27 21:38  Kobelieve  阅读(226)  评论(0编辑  收藏  举报