淺談一下緩存策略以及memcached 、redis區別

緩存策略三要素:緩存命中率   緩存更新策略  最大緩存容量。衡量一個緩存方案的好壞標準是:緩存命中率。緩存命中率越高,緩存方法設計的越好。 

三者之間的關係爲:當緩存到達最大的緩存容量時,會觸發緩存更新策略,而緩存更新策略影響到了緩存命中率。可見,緩存方案的好壞依賴於緩存最大量的設置,以及緩存更新策略的選擇。

 對於經常變動的數據,不適合做緩存。對於靜態、讀寫比高(一般10:1以上)的數據做緩存。

常見的緩存更新策略有:

1 FIFO 隊列,先進先出,典型應用:MySQL的 query cache,採用的就是這種簡單的緩存更新策略

2 LFU:最少使用 ,藉助計數器實現

3 LRU:最久未被使用,藉助計數器和隊列實現

 

 

注意,當到達內存上限時,redis是可以開啓虛擬內存的,將數據交換至硬盤。不過redis2.6之後的版本,已經不再提倡使用虛擬內存,太影響性能了。

redis內存達到上限時,會再也存不進去數據的,報錯。

 

memcached 的緩存更新策略是LRU算法,默認就是,無法選擇。

redis的緩存更新策略較爲豐富,有三種,需要自己配置。

緩存過期時淘汰策略:

memcached的過期數據不會立即從內存刪除,而是讀取的時候判斷是否過期,過期則刪除。這樣避免類似一個守護進程去時時刻刻刪除過期數據

redis讀取的時候會判斷是否過期,過期則刪除。除此之外,redis還會定期清理過期數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章