过期机制
Redis提供了两种过期机制相互配合:定期删除与惰性删除
定期删除
redis.conf文件中有个hz的配置,默认配置的是hz=10,这个10表示每隔一段时间redis会再一秒内扫描10次设置了过期时间的key,但是一次仅扫描出20个key,判断这20个key是不是已经过期,如果已经过期了的数量超过1/4那么会重新扫描20个key直到过期的key不超过1/4。
惰性删除
当客户端在操作这个key的时候,如果key过期了就删除,返回null。
淘汰策略
在64位操作系统中,没有设置Redis默认的maxMemory的大小,一般建议设置为物理内存大小的3/4。当内存达到maxMemory时,执行淘汰策略。
noeviction:不淘汰,直接报错
volatile-ttl:淘汰设置了过期时间的key中剩余存活时间最短的
volatile-lru;淘汰设置了过期时间的key中最近最少使用的
volatile-lfu:从设置了过期时间的key中淘汰最不经常使用的
volatile-random:随机从设置了过期时间的key中淘汰
allkeys-lru:从所有的key中淘汰最近最少使用的
allkeys-lfu从所有的key中淘汰最不经常使用的
allkeys-random:从所有key中随机删除某个key。
redis.conf配置文件中通过 maxmemory-samples 选项配置的的值可以调整触发淘汰机制时每次取得淘汰数量的多少。