Redis内存策略

Redis内存策略

image-20240224183240680

1.内存过期策略

image-20240224183310665

1.1DB结构

dict存放所有的键值对,称之为键空间;expires存放设置了过期时间的键值对;blcking_keys存放客户端调用BLPOP等命令等待数据的键值对;watched_keys存放客户端进行事务处理过程中监听可能变化的键值对。

image-20240224183338949

image-20240224183407164

1.2过期策略

image-20240224183530137

类似于MySQL中统计数据raws(SHOW TABLE STATUS查看)是利用抽样若干个页面得到平均记录数,然后乘以总页面数得到预估的行数(可以通过系统变量innodb_stats_persistent_sample_pages控制抽样页数),Redis中过期键的周期性删除也是通过定时抽样部分过期key执行删除。
周期性删除的两种模式:
SLOW模式:在aeMain的事件循环中判断执行周期(默认每隔100ms执行一次)是否已到达,低频多清理,每次耗时不超过25ms
FAST模式:在aeMain的事件循环中每次都会执行,高频少清理,每次耗时不超过1ms

image-20240224183624650

image-20240224183717314

2.内存淘汰策略

2.1淘汰时机

image-20240224185944327

2.2淘汰策略

image-20240224190041984

image-20240323192022123

image-20240323192235449

image-20240816200232621

image-20240323183141721

image-20240224191401165