用跟上一篇volatile-lru完全相同的数据分布,只把策略换成allkeys-lru,直接对照验证这次连无TTL的key也会被淘汰。
同样200个无TTL的key、600个有TTL的key、同样3MB的maxmemory,唯一变量是策略名字。
操作CONFIG SET maxmemory-policy allkeys-lru -- 唯一的区别 CONFIG SET maxmemory 3mb 插入200个persistent_*(无TTL) 插入600个volatile_*(有TTL)
跟上一篇volatile-lru的结果直接对照。
结果evicted_keys: 168 persistent_(无TTL) 幸存: 187 / 200 ← 上一篇volatile-lru下是200/200! volatile_(有TTL) 幸存: 529 / 600
对照非常直接:完全相同的数据分布,上一篇 volatile-lru 下无TTL的key一个都没少(200/200),这一篇同样场景换成 allkeys-lru,无TTL的key也开始被淘汰了(187/200,少了13个)。
每一步都是本文上面用redis-cli和redis-py跑出来的原始结果。
CONFIG SET maxmemory-policy allkeys-lru:对照volatile-lru验证淘汰范围的区别