1. 程式人生 > >初識Redis與Memcached

初識Redis與Memcached

一、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支援的資料結構及其特點
  1. Key String——Redis使用字串儲存key,但key中不能包括空格與"\n"字元。
  2. Value String——最常用的資料結構,一個key對應一個字串或數值 value,一個鍵最大能儲存512MB(一個英文字元或數字1B,一箇中文字元2B),且是二進位制安全的(沒有特殊字元被轉義,存入二進位制檔案前和讀取二進位制檔案後,結果完全一致)。因此redis可以方便的儲存圖片、視訊二進位制檔案、CSS檔案或者序列化的物件(php中可以通過序列化物件,或轉為Json格式儲存物件、陣列等)。
  3. Hash——方便地儲存物件等結構化資料。底層實現為一個HashMap(但元素較少時,為了節省記憶體,直接使用zipmap儲存)。
  4. List——很重要的資料結構,有重複元素,有序佇列,可在頭部、尾部或者某一元素前後插入。底層實現為一個雙向連結串列(更方便地支援反向查詢遍歷)。一般用於一些關注列表、粉絲列表、訊息佇列等功能。
  5. Set——集合,無重複元素,會自動使用hash排序,Redis提供指令可以求多個Set的交集、並集、差集。底層實現為一個value為null的HashMap。對有儲存多個非重資料時或有求交併補集需求時推薦使用,更實際的情況時,由於Set的非重特性,它常常被應用於記錄做過某事,比如註冊賬號時,判斷使用者名稱是否已佔;或投票系統中,判定使用者是否投過票等。
  6. Sorted Set——非常有用的資料結構,有序集合,與Set功能類似,只是Set的排序是通過Hash,而Sorted Set需要提供一個score權重以供排序(如果用發表時間作為score排序,那麼資料可以自動根據時間排序)。底層實現為HashMap與跳躍表,HashMap用於提供快速根據hash查詢資料的score,跳躍表根據score有序儲存所有資料。主要可用於頂帖等功能。

三、Memcached與Redis適用場景     相對於Memcached,Redis面世時間更短且具有更多的功能,一般被視作為“Memcached”的增強版,所以Redis通常是首選方案,但在如下兩種情況時,Memcached可能更具優勢:
  1. 在快取只進行讀取操作的資料時,如快取HTML、CSS、與其他的一些快取週期內無需更新的資料時,Memcached是更具效率的。
  2. 快取系統需要水平拓展、建立叢集時,Memcached相較於Redis實現難度更低。