内存回收

1.过期Key的处理 RedisDb是按功能进行分区的
image1

RedisDb 内存图
image2

2.1
惰性删除: 如果想已过期就立即删除, 那么就要给每个key安装监视器, 成本巨大
因此我们使用懒删除, 访问到key时查看是否过期, 是则删除, 否则继续.
image3

2.2
周期删除: 抽样删除(有些key已过期但很少人访问可能造成长期内存浪费)
image4

2.2.1
Slow & Fast
image5

3.内存淘汰策略
image6

主动淘汰机制
在内存不够用时,不是随机淘汰,
而是最近访问少、访问频率低的 key 先被淘汰
为了做到这一点,它为每个 key 维护一个压缩的“访问频率统计信息”。
LRU: 最近使用最少
LFU: 使用频率最小

LFU:
image7

3.1 逻辑访问函数
image8

3.2 逻辑衰减
image9

image10