Redis内存策略
1.内存过期策略
1.1DB结构
dict存放所有的键值对,称之为键空间;expires存放设置了过期时间的键值对;blcking_keys存放客户端调用BLPOP等命令等待数据的键值对;watched_keys存放客户端进行事务处理过程中监听可能变化的键值对。
1.2过期策略
类似于MySQL中统计数据raws(SHOW TABLE STATUS查看)是利用抽样若干个页面得到平均记录数,然后乘以总页面数得到预估的行数(可以通过系统变量innodb_stats_persistent_sample_pages控制抽样页数),Redis中过期键的周期性删除也是通过定时抽样部分过期key执行删除。
周期性删除的两种模式:
SLOW模式:在aeMain的事件循环中判断执行周期(默认每隔100ms执行一次)是否已到达,低频多清理,每次耗时不超过25ms
FAST模式:在aeMain的事件循环中每次都会执行,高频少清理,每次耗时不超过1ms