redis淘汰策略面试题_redis有哪些数据淘汰策略
redis內(nèi)存數(shù)據(jù)數(shù)據(jù)集大小升到一定大的時(shí)候,就會實(shí)行數(shù)據(jù)淘汰策略(回收策略)。
1,volatile-lru:從已設(shè)置過期時(shí)間的哈希表(server.db[i].expires)中隨機(jī)挑選多個(gè)key,然后在選到的key中用lru算法淘汰最近最少使用的數(shù)據(jù)
2,allkey-lru:從所有key的哈希表(server.db[i].dict)中隨機(jī)挑選多個(gè)key,然后再選到的key中利用lru算法淘汰最近最少使用的數(shù)據(jù)
3,volatile-ttl:從已設(shè)置過期時(shí)間的哈希表(server.db[i].expires)中隨機(jī)挑選多個(gè)key,然后在選到的key中選擇過期時(shí)間最小的數(shù)據(jù)淘汰掉。
4,volatile-random:從已設(shè)置過期時(shí)間的哈希表(server.db[i].expires)中隨機(jī)挑選key淘汰掉。
5,allkey-random:從所有的key的哈希表(server.db[i].dict)中隨機(jī)挑數(shù)據(jù)淘汰
6,no-eviction(驅(qū)逐):內(nèi)存達(dá)到上限,不淘汰數(shù)據(jù)。
redis確認(rèn)驅(qū)逐某個(gè)鍵值對后,會刪除這個(gè)數(shù)據(jù),并將這個(gè)數(shù)據(jù)變更消息發(fā)布到本地(AOF持久化)和從機(jī)(主從連接)。
LRU數(shù)據(jù)淘汰機(jī)制是這樣的:在數(shù)據(jù)集中隨機(jī)挑選幾個(gè)鍵值對,去除其中最近最少使用的鍵值對淘汰。所以Redis并不是保證取得所有數(shù)據(jù)集中最少最少使用的鍵值對,而只是在隨機(jī)挑選的幾個(gè)鍵值對中。
TTL數(shù)據(jù)淘汰機(jī)制:從國企時(shí)間redisDB.expires表中隨機(jī)挑選幾個(gè)鍵值對,取出其中最快過期的鍵值對淘汰。所以Redis并不保證取得所有過期時(shí)間表中最快過期的鍵值對,而是隨機(jī)挑選的幾個(gè)鍵值對中。
無論是什么機(jī)制,都是從所有的鍵值對中挑選合適的淘汰。
在哪里開始淘汰數(shù)據(jù):
Redis服務(wù)器每執(zhí)行一次命令的時(shí)候,會檢測使用的內(nèi)存是否超額。如果超額,即進(jìn)行數(shù)據(jù)淘汰。
總結(jié)
以上是生活随笔為你收集整理的redis淘汰策略面试题_redis有哪些数据淘汰策略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快手极速版屏蔽设置在哪里
- 下一篇: ax的范数最大_矩阵方程ax=b的范数约