Redis缓存过期处理与内存淘汰机制。
缓存过期处理分为两种模式:
1.(主动)定时删除:Redis定时检查过期的key,并删除.(默认一秒钟检查10次,这个次数可以在redis.conf里面的hz属性设置)。
2.(被动)惰性删除:当请求过来取访问一个key时,Redis会对这个key判断是否过期,如果过期删除,返回一个nil。这种策略对cpu比较友好,不会有太多的损耗。但是内存占用比较高。
如果内存被Redis缓存占满了怎么办?内存占满了可以使用硬盘来保存,但是没有意义,因为硬盘没有内存块,会影响到Redis的性能,所以,当内存占满以后,redis提供一套淘汰机制:MEMORY MANAGEMENT
内存淘汰机制:
#volatile-lru -> Evict using approximated LRU among the keys with an expire set.
# allkeys-lru -> Evict any key using approximated LRU.
# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
# allkeys-lfu -> Evict any key using approximated LFU.
# volatile-random -> Remove a random key among the ones with an expire set.
# allkeys-random -> Remove a random key, any key.
# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
# noeviction -> Don't evict anything, just return an error on write operations.
#
# LRU means Least Recently Used(最少时间)
# LFU means Least Frequently Used(最少次数)
注:以 volatile 开头的都是针对设置过过期时间的缓存