加载中...
Redis 通过 maxmemory 参数限定内存上限,达到上限后按 maxmemory-policy 配置的策略淘汰键腾出空间,共八种:noeviction(默认,不淘汰,写命令报错)、allkeys-lru、volatile-lru、allkeys-lfu、volatile-lfu、allkeys-random、volatile-random、volatile-ttl(优先淘汰剩余生存时间最短的键)。volatile 系列只在设置了过期时间的键中挑选,allkeys 系列面向全部键。
出于内存与性能考虑,Redis 的 LRU/LFU 都是近似算法:不维护全局链表,而是每次随机采样若干键(maxmemory-samples,默认 5)淘汰其中最差者;LFU 用每键 8 位的对数计数器记录频率,并按 lfu-decay-time 随时间衰减,lfu-log-factor 控制计数增长速度。
纯缓存场景常用 allkeys-lfu 或 allkeys-lru;缓存与持久数据混存时用 volatile 系列并给可淘汰键设置 TTL;绝不能丢数据的场景保持 noeviction 并做好容量监控。
登录 后参与讨论
暂无讨论,来发表第一条评论吧