redis maxmemory 采样淘汰数据流程
2020-04-07 11:41:17 0 举报
视图主要描述了 redis maxmemory 采样淘汰数据流程。redis 当内存达到 maxmemory 阈值时,启动淘汰策略,将数据淘汰减少 redis 内存。对于海量数据 redis 采用了近似的采样算法。遍历 redis 数据库,将采样放进一个样本池列表中,列表数据从左到右升序排列,选择最右边的数据(bestkey) 进行淘汰。淘汰的策略有:最快过期数据,最近不活跃数据 (lru),访问频率比较低的 (lfu) 数据。
作者其他创作
大纲/内容
idle1 <
key1
now2
wenfh2020.com
idle time
now1
ldt
idle time2
N
lruclock
...
freeMemoryIfNeeded
bestkey
key != NULL && data != NULL
Elapsed
idle2 <
keyN
idle3 <
0
pool
database
radom samples
unsigned long LFUTimeElapsed(unsigned long ldt) { unsigned long now = LFUGetTimeInMinutes(); if (now >= ldt) return now-ldt; return 65535-ldt+now;}
EVPOOL_SIZE
o->lru
1
< idleN
key2
65535
2
redis maxmemory 采样淘汰数据流程
look up bestkey
key3
LRU_CLOCK_MAX
0 条评论
下一页