資料結構而非型別
Redis 有 5 種基本資料結構:
有很多文章都會說,Redis 支援 5 種常用的 資料型別,這其實存在很大的歧義。Redis 裡存的都是二進位制資料,其實就是位元組陣列 (byte[]),這些位元組資料是沒有資料型別的,只有把它們按照合理的格式解碼後,可以變成一個字串,數字或物件,此時才具有資料型別。
所以任何東西只要能轉化成位元組陣列 (byte[]),就可以存到 Redis 裡,無論是字串、數字、物件、圖片、聲音、還是其他檔案。
string
Redis 裡的資料結構 string 指的並不是字串,它其實表示的是一種最簡單的,一個 key 只能對應一個 value 的資料結構。這裡的 key 和 value 都是 byte 陣列,只不過 key 一般是由一個字串轉換成的 byte 陣列,value 則根據實際需要而定。
在特定情況下,對 value 也會有一些要求,比如要進行自增或自減操作,那 value 對應的 byte 陣列必須要能被解碼成一個數字才行。
value 是一個可變的位元組陣列,我們初始化字串的內容,
list
那麼 list 這種資料結構,其實表示一個 key 可以對應多個 value,且 value 之間是有先後順序的,value 值可以重複。
set
set 這種資料結構,表示一個 key 可以對應多個 value,且 value 之間是沒有先後順序的,value 值不可以重複。
hash
hash 這種資料結構,表示一個 key 可以對應多個 key - value,此時這些 key - value 對之間的先後順序一般意義不大,這是一個按照名稱語義來訪問的資料結構,而非位置語義。
zset
zset 又稱 sorted set,這種資料結構表示一個 key 可以對應多個 value,value 之間是有大小排序的,value 值不可以重複。每個 value 都和一個浮點數相關聯,該浮點數叫 score。元素排序規則是:先按 score 排序,再按 value 排序。