Redis过期键的删除策略:
- 定时删除:在设置键的过期时间同时,创建一个定时器Timer,让定时器在键的过期时间,立即执行对键的删除操作.
- 惰性删除:放任键过期不管,但是每次从键空间获取键的时候,都检查键是否过期,如果过期就删除,如果没过期就返回.
- 定期删除:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键.
Redis回收策略(淘汰策略)
- volatile-lru:从已设置过期时间的数据集( server.db[i].expires)中挑选最近最少使用的数据淘汰
- volatile-ttl: 从已设置过期时间的数据集( server.db[i].expires) 中挑选将要过期的数据淘汰
- volatile-random: 从已设置过期时间的数据集( server.db[i].expires) 中任意选择数据淘汰
- allkeys-lru: 从数据集( server.db[i].dict) 中挑选最近最少使用的数据淘汰
- allkeys-random: 从数据集( server.db[i].dict) 中任意选择数据淘汰
- no-enviction( 驱逐) : 禁止驱逐数据
注意这里的 6 种机制,volatile 和 allkeys 规定了是对已设置过期时间的数据集淘汰数据还是从全部数据 集淘汰数据, 后面的 lru、ttl 以及 random 是三种不同的淘汰策略,
再加上一种 no-enviction 永不回 收的策略。