緩存策略三要素:緩存命中率 緩存更新策略 最大緩存容量。衡量一個緩存方案的好壞標準是:緩存命中率。緩存命中率越高,緩存方法設計的越好。 算法
三者之間的關係爲:當緩存到達最大的緩存容量時,會觸發緩存更新策略,而緩存更新策略影響到了緩存命中率。可見,緩存方案的好壞依賴於緩存最大量的設置,以及緩存更新策略的選擇。緩存
對於常常變更的數據,不適合作緩存。對於靜態、讀寫比高(通常10:1以上)的數據作緩存。dom
常見的緩存更新策略有:設計
1 FIFO 隊列,先進先出,典型應用:MySQL的 query cache,採用的就是這種簡單的緩存更新策略code
2 LFU:最少使用 ,藉助計數器實現隊列
3 LRU:最久未被使用,藉助計數器和隊列實現io
對於Redis,當達到maxmemory時,採用什麼策略刪除key,有五個可選項可根據應用場景進行選擇:class
volatile-lru 採用LRU算法刪除帶有expire的key(默認) allkeys-lru 採用LRU算法刪除任意key volatile-random 任意刪除帶有expire的key allkeys-random 刪除任意key volatile-ttl 刪除最接近expire的key noeviction 不刪除,直接對寫命令返回錯誤