用於解決什麼問題呢?舉個例子
1)咱們都知道技術都是衍生於問題的。那咱們就來講說用來作什麼吧。
你們能夠想一想,當咱們的物理服務內存只有8G,可是數據卻有100G,如何慢慢的放在redis中呢?再加上公司近期資金不夠,不能擴展機器怎麼辦?
2)解決上述的問題,咱們就要引出一個redis的策略,便是標題。web
淘汰策略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.使用上面的解決方式,會暴露出問題也是沒辦法的,畢竟魚和熊掌不可兼得。咱們得先解決當下的問題不是。上面會總結出一個詞語緩存命中率緩存