初識Redis與Memcached
阿新 • • 發佈:2018-12-24
一、Redis與Memcached區別(初識版):
1、Memcached只提供String一種value型別;而Redis除了支援String資料型別,同時還提供Hash、List、Set、Sorted Set等資料型別。
2、Memcached最大鍵長250個字元,鍵值最大容量1MB;Redis一個鍵值對的最大容量512MB。
3、Memcached是純Cache,所有資料全部儲存在記憶體中;而Redis除了記憶體快取,還支援兩種持久化方式Snapshotting快照與Append-Only追加。
4、Redis支援主從複製。
二、Redis支援的資料結構及其特點
- Key String——Redis使用字串儲存key,但key中不能包括空格與"\n"字元。
- Value String——最常用的資料結構,一個key對應一個字串或數值 value,一個鍵最大能儲存512MB(一個英文字元或數字1B,一箇中文字元2B),且是二進位制安全的(沒有特殊字元被轉義,存入二進位制檔案前和讀取二進位制檔案後,結果完全一致)。因此redis可以方便的儲存圖片、視訊二進位制檔案、CSS檔案或者序列化的物件(php中可以通過序列化物件,或轉為Json格式儲存物件、陣列等)。
- Hash——方便地儲存物件等結構化資料。底層實現為一個HashMap(但元素較少時,為了節省記憶體,直接使用zipmap儲存)。
- List——很重要的資料結構,有重複元素,有序佇列,可在頭部、尾部或者某一元素前後插入。底層實現為一個雙向連結串列(更方便地支援反向查詢遍歷)。一般用於一些關注列表、粉絲列表、訊息佇列等功能。
- Set——集合,無重複元素,會自動使用hash排序,Redis提供指令可以求多個Set的交集、並集、差集。底層實現為一個value為null的HashMap。對有儲存多個非重資料時或有求交併補集需求時推薦使用,更實際的情況時,由於Set的非重特性,它常常被應用於記錄做過某事,比如註冊賬號時,判斷使用者名稱是否已佔;或投票系統中,判定使用者是否投過票等。
- Sorted Set——非常有用的資料結構,有序集合,與Set功能類似,只是Set的排序是通過Hash,而Sorted Set需要提供一個score權重以供排序(如果用發表時間作為score排序,那麼資料可以自動根據時間排序)。底層實現為HashMap與跳躍表,HashMap用於提供快速根據hash查詢資料的score,跳躍表根據score有序儲存所有資料。主要可用於頂帖等功能。
- 在快取只進行讀取操作的資料時,如快取HTML、CSS、與其他的一些快取週期內無需更新的資料時,Memcached是更具效率的。
- 快取系統需要水平拓展、建立叢集時,Memcached相較於Redis實現難度更低。