redis有两大类过期策略
(1)定期删除:redis每隔100ms随机抽取设置过期的key,检查key是否过期,若过期就删掉;
(2)惰性删除:使用定期删除由于其随机性,会造成部分过期值没有及时清理,所以需要有另一中机制来弥补,那么就出现了惰性删除机制,惰性删除机制就是在get这个key值的时候,如果这个key已过期,那么删除,不返回任何东西;
reids六大淘汰机制
由于过期策略还是会造成大量过期数据留着内存中,严重影响redis存储和性能,所以需要有一些策略来弥补
(1)noeviction(驱逐)禁止驱逐数据,当内存不足以容纳新的数据时,新写入入操作会报错(一般不用吧):
(2)allkeys_lru:从数据集(server.db[i].dict)中挑选最少使用的数据淘汰,即移除最少使用key(最常用);
(3)allkys_random:从已设置过期时间的数据集(server.db[i].dict)中任意选择数据淘汰,即随机移除最少使用的key(不常用);
(4)volatile_lru:从已设置过期时间的数据集(server.db[i].expries)中挑选最近使用的数据淘汰;
(5)volatile_random:从已设置过期时间的数据集(server.db[i].expries)中挑选任意数据淘汰;
(6)volatile-ttl:从已设置过期时间的数据集(server.db[i].expries)中挑选将要过期的数据淘汰;