Redis的过期策略与内存淘汰机制

 2024-03-31    0 条评论    523 浏览

redis

过期策略

定期删除

定时扫描,每秒10次扫描,贪心算法策略

  1. 随机抽取20个key
  2. 删除过期的key
  3. 如果过期key占1/4以上,重复上面步骤

可能导致的问题:如果突然有大量key都过期,会导致不断重复扫描抽取删除操作,导致卡顿;

注意点:过期时间注意别同一个时间;

从库不会扫描删除,只会接受主库的删除命令,可能会出现主从过期key不一致的情况;

惰性删除

顾名思义,就是在获取key的时候判断是否过期,如果过期则删除;

定期删除可能会有少量key没有删除,所以要有惰性删除

总结

定时批量删除+惰性零散处理

内存淘汰机制

当Redis缓存的数据超过Redis服务本身设置的内存上限(max memory),会出现淘汰机制;

默认策略

默认不淘汰,会限制写入,允许读与删除

volatile-lru

尝试删除设置了过期时间的key中用的最少的key;避免突然丢失大量还在用的key

volatile-ttl

根据key过期时间,删除剩余寿命值最小的key

volatile-random

在过期key中随机删除

allkeys-lru

删除整个key集合

allkeys-random

整体随机删除key

总结

volatile策略不会删除没设置过期时间的key;

一般不会设置allkeys策略;