目录
46.Redis内存淘汰算法有哪些?
Redis供支持八种淘汰策略,分别是noeviction,volatile-random,volatile-ttl,volatile-lru,volatile-lfu,allkeys-lru,allkeys-random和allkeys-lfu策略。
怎么理解呢?主要看分三类看:
不淘汰
noeviction(v4.0后默认的)
对设置了过期时间的数据中进行淘汰
随机:volatile-random
ttl:volatile-ttl
lru:volatile-lru
lfu:volatile-lfu
全部数据进行淘汰:
随机:allkeys-random
lru:allkeys-lru
lfu:allkeys-lfu
LRU算法:
LRU算法的全称是Least Recently Used,按照最近最少使用的原则来筛选数据。这种模式下会使用LRU算法筛选设置了过期时间的键值对。
Redis优化的LRU算法实现:
Redis会记录每个数据的最近一次被访问的时间戳。在Redis在决定淘汰的数据时,第一次会随机选出N个数据,把他们作为一个候选集合。接下来,Redis会比较这N个数据的lru字段,把lru字段值最小的数据从缓存中淘汰出去。通过随机读取待删除集合,可以让Redis不用维护一个巨大的链表,也不用操作链表,进而提升性