緩存技術方面說到redis大家必然會聯想到memcached,了解它們的人應該都知道以下幾點吧
- redis與 memcached相比,redis支持key-value數據類型,同事支持list、set、hash等數據結構的存儲。
- redis支持數據的備份,即master-slave模式的數據備份。
- redis支持數據的持久化。
- redis在很多方面支持數據庫的特性,可以這樣說他就是一個數據庫系統,而memcached只是簡單地K/V緩存。
- 它們在性能方面差別不是很大,讀取方面尤其是針對批量讀取性能方面memcached占據優勢。當然redis也有他的優點,如持久性、支持更多的數據結構。
- 所以在選擇方面如果有持久方面的需求或對數據類型和處理有要求的應該選擇redis。
- 如果簡單的key/value 存儲應該選擇memcached。
memcached的存儲機制為Slab Allocation機制。
簡單的談談Slab Allcation機制
她的主要術語:1、Page------分配給Slab的內存空間,默認是1MB。分配給Slab之后根據slab的大小切分成chunk
2、Chunk------用於緩存記錄的內存空間
3、Slab Class-----特定大小的Chunk組
memcached使用的場景:
通常在電子商務系統中在網站的左側會是商品的分類,中間是商品搜索結果的列表,可以查看商品信息和商家的基本信息和相關商家的信譽度信息。
咋們一般的做法是:
多次從數據庫中查詢全站的商品分類--->>遞歸形成你所需的分類tree--->>進入處理數據------->>顯示到頁面上
memcached的做法:
第一次顯示的時候:判斷memcached緩存中是否有該分類如果不存在執行SQL查詢,然后放進memcached中,然后顯示到界面
第二次顯示的時候:判斷memcached緩存中是否有該分類如果存在直接讀取memcached緩存,然后顯示到界面
若遇到更新的數據,找到memcached中與之對應的key值刪除它,重新插入memcached緩存中。