Redis淘汰策略
阿新 • • 發佈:2018-12-17
-
用於解決什麼問題呢?舉個例子 1)我們都知道技術都是衍生於問題的。那我們就來說說用來做什麼吧。 大家可以想想,當我們的物理服務記憶體只有8G,但是資料卻有100G,如何慢慢的放在redis中呢?再加上公司近期資金不夠,不能擴充套件機器怎麼辦? 2)解決上述的問題,我們就要引出一個redis的策略,即是標題。
-
淘汰策略
1)voltile-lru:從已設定過期時間的資料集(server.db[i].expires)中挑選最近最少使用的資料淘汰 2)volatile-ttl:從已設定過期時間的資料集(server.db[i].expires)中挑選將要過期的資料淘汰 3)volatile-random:從已設定過期時間的資料集(server.db[i].expires)中任意選擇資料淘汰 4)allkeys-lru:從資料集(server.db[i].dict)中挑選最近最少使用的資料淘汰 5)allkeys-random:從資料集(server.db[i].dict)中任意選擇資料淘汰 6)no-enviction(驅逐):禁止驅逐資料
解析
使用淘汰策略是可以把上面的問題暫時頂過去,但是會出現一系列的問題。 1.記憶體是騰出來了,但是這樣快取在其中的資料卻出去了,萬一我需要再次呼叫快取中的資料又怎麼解決? 2.前段時間沒有訪問的,現在火起來了,我的快取中沒有,一下壓力進入DB怎麼辦? 3.使用上面的解決方式,會暴露出問題也是沒辦法的,畢竟魚和熊掌不可兼得。我們得先解決當下的問題不是。上面會總結出一個詞語快取命中率
- 什麼事快取命中率? 1)命中率就是快取裡可以查詢到的記錄數除以資料庫裡的總記錄數。命中率越低效能越高,反之越差。(大白話就是直接去資料庫查詢而不走快取,這樣就增大了資料庫的壓力,查詢到資料庫中的值以後再存入快取中。) 命中率低下的原因也有很多,例如: 1.記憶體不足,淘汰掉了; 2.快取伺服器宕機;