LRU / LFU 不是全量排序
Redis 从少量候选中抽样比较,因此这里也采用 5 个候选的近似选择。它能趋近理想结果,但不会保证每次都淘汰“绝对最旧”或“绝对最低频”的键。
Redis memory pressure lab
把同一批确定性请求交给不同的 maxmemory-policy。水位线会告诉你内存是否真的被缓存占满,淘汰队列则揭示“命中率更高”背后牺牲了哪些键。
调整参数后运行,观察相同请求在不同策略下如何改变结果。
Redis 从少量候选中抽样比较,因此这里也采用 5 个候选的近似选择。它能趋近理想结果,但不会保证每次都淘汰“绝对最旧”或“绝对最低频”的键。
即便内存里还有很多永久键,volatile 策略也不会碰它们。候选池一旦为空,新的写命令会直接失败,而不是自动改淘汰永久键。
可丢缓存和不可丢状态共享同一个实例时,allkeys 可能淘汰业务状态;volatile 又可能让永久状态挤占全部空间。更稳妥的边界是分实例、分内存预算。
教学模型:每个键占 1 MB;TTL 为 28~92 个时间步;80% 请求为读、20% 为写;热点池占初始键的 20%。模型省略对象编码、碎片率与 Redis 内部开销,适合比较策略,不用于容量估算。