redis 删除策略

定时删除:创建一个定时器,在键过期时立即删除。

为什么不用定时删除策略:虽然内存及时释放,但太消耗 CPU 资源。

定期删除,设置了 expire 的键存储在一个独立的字典中,默认每 100ms 随机选择 20 个 key,删除其中已过期的 key。如果过期 key 比例超过 1/4,那就重复这一步骤。扫描时间上限,默认不会超过 25ms。

定期删除会导致很多 Key 到时间没有删除,浪费内存。

惰性删除:键过期后不管,读取时,判断是否过期。同样会浪费内存

数据淘汰:在Redis.conf中,允许用户设置最大使用内存大小server.maxmemory,

和淘汰策略maxmemory-policy volatile-lru

Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。

1.volatile-lru:从已设置过期的数据集中挑选最近最少使用的淘汰

2.volatile-ttr:从已设置过期的数据集中挑选将要过期的数据淘汰

3.volatile-random:从已设置过期的数据集中任意挑选数据淘汰

4.allkeys-lru:从数据集中挑选最近最少使用的数据淘汰

5.allkeys-random:从数据集中任意挑选数据淘汰

6.noenviction:禁止淘汰数据

redis淘汰数据时还会同步到aof

相关推荐