Redis淘汰策略

  1. 用於解決什麼問題呢?舉個例子
    1)咱們都知道技術都是衍生於問題的。那咱們就來講說用來作什麼吧。
    你們能夠想一想,當咱們的物理服務內存只有8G,可是數據卻有100G,如何慢慢的放在redis中呢?再加上公司近期資金不夠,不能擴展機器怎麼辦?
    2)解決上述的問題,咱們就要引出一個redis的策略,便是標題。web

  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)命中率就是緩存裏能夠查詢到的記錄數除以數據庫裏的總記錄數。命中率越低性能越高,反之越差。(大白話就是直接去數據庫查詢而不走緩存,這樣就增大了數據庫的壓力,查詢到數據庫中的值之後再存入緩存中。) 命中率低下的緣由也有不少,例如: 1.內存不足,淘汰掉了; 2.緩存服務器宕機;