redis的五種數據類型及常見操作

目錄:

說明:

  • redis中所有數據結構都以唯一的key字符串作爲名稱,然後通過這個唯一的key來獲取對應的value
  • 不同的數據類型數據結構差異就在於value的結構不一樣

字符串(string)

value的數據結構(數組)

  1. 字符串value數據結構類似於數組,採用與分配容易空間來減少內存頻繁分配
  2. 當字符串長度小於1M時,擴容就是加倍現有空間
  3. 如果字符串長度操作1M時,擴容時最多擴容1M空間,字符串最大長度爲 512M

字符串的使用場景(緩存)

  • 字符串一個常見的用途是緩存用戶信息,我們將用戶信息使用JSON序列化成字符串
  • 取用戶信息時會經過一次反序列化的過程
    在這裏插入圖片描述

list(列表)

value的數據結構(雙向鏈表)

  1. 列表的數據結構是雙向鏈表,這意味着插入和刪除的時間複雜度是0(1),索引的時間複雜度位0(n)
  2. 當列表彈出最後一個元素後,該數據結構會被自動刪除,內存被回手

列表的使用場景

  • 隊列

  • 在這裏插入圖片描述

hash(哈希)

value的數據結構(HashMap)

  1. redis中的字典也是HashMap(數組+列表)的二維結構
  2. 不同的是redis的字典的值只能是字符串

hash的使用場景(緩存)

  • hash結構也可以用來緩存用戶信息,與字符串一次性全部序列化整個對象不同,hash可以對每個字段進行單獨存儲
  • 這樣可以部分獲取用戶信息,節約網絡流量
  • hash也有缺點,hash結構的存儲消耗要高於單個字符串
    在這裏插入圖片描述

set(集合)

value的數據結構(字典)

  1. redis中的集合相當於一個特殊的字典,字典的所有value都位null
  2. 當集合中的最後一個元素被移除後,數據結構會被自動刪除,內存被回收

set使用場景

  • set結構可以用來存儲某個活動中中獎的用戶ID,因爲有去重功能,可以保證同一用戶不會中間兩次
    在這裏插入圖片描述

zset(有序集合)

value的數據結構(跳躍列表)

  1. zset一方面是一個set,保證了內部的唯一性
  2. 另一方面它可以給每一個value賦予一個score,代表這個value的權重
  3. zset內部實現用的是一種叫做“跳躍列表”的數據結構
  4. zset最後一個元素被移除後,數據結構就會被自動刪除,內存也會被回收

zset應用場景

  1. 粉絲列表:value(粉絲ID),score(關注時間),這樣可以輕鬆按關注事件排序
  2. 學生成績:value(學生ID),score(考試成績),這樣可以輕鬆對成績排序
    在這裏插入圖片描述

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