redis目前支援5種資料型別,分別是:
string(字串)
list(列表)
hash(字典)
set(集合)
sorted set(有序集合)
string是簡單的 key-value 鍵值對,value 不僅可以是 string,也可以是數字。string在redis內部儲存預設就是乙個字串,被redisobject所引用,當遇到incr,decr等操作時會轉成數值型進行計算,此時redisobject的encoding欄位為int。
string是最常用的一種資料型別,普通的key/value儲存都可以歸為此類
redis列表是簡單的字串列表,簡單的說就是乙個鍊錶或者說是乙個佇列。可以從頭部或尾部向redis列表新增元素。列表的最大長度為2^32 - 1,也即每個列表支援超過40億個元素。
redis list的實現為乙個雙向鍊錶,即可以支援反向查詢和遍歷,更方便操作,不過帶來了部分額外的記憶體開銷,redis內部的很多實現,包括傳送緩衝佇列等也都是用的這個資料結構。
redis list的應用場景非常多,也是redis最重要的資料結構之一,比如twitter的關注列表、粉絲列表等都可以用redis的list結構來實現,再比如有的應用使用redis的list型別實現乙個簡單的輕量級訊息佇列,生產者push,消費者pop/bpop
redis hash對應value內部實際就是乙個hashmap,實際這裡會有2種不同實現,這個hash的成員比較少時redis為了節省記憶體會採用類似一維陣列的方式來緊湊儲存,而不會採用真正的hashmap結構,對應的value redisobject的encoding為zipmap,當成員數量增大時會自動轉成真正的hashmap,此時encoding為ht。
假設有多個使用者及對應的使用者資訊,可以用來儲存以使用者id為key,將使用者資訊序列化為比如json格式做為value進行儲存。
可以理解為一堆值不重複的列表,類似數學領域中的集合概念,且redis也提供了針對集合的求交集、並集、差集等操作。
set 的內部實現是乙個 value永遠為null的hashmap,實際就是通過計算hash的方式來快速排重的,這也是set能提供判斷乙個成員是否在集合內的原因。
redis set對外提供的功能與list類似是乙個列表的功能,特殊之處在於set是可以自動排重的,當你需要儲存乙個列表資料,又不希望出現重複資料時,set是乙個很好的選擇,並且set提供了判斷某個成員是否在乙個set集合內的重要介面,這個也是list所不能提供的。
又或者在微博應用中,每個使用者關注的人存在乙個集合中,就很容易實現求兩個人的共同好友功能。
redis有序集合類似redis集合,不同的是增加了乙個功能,即集合是有序的。乙個有序集合的每個成員帶有分數,用於進行排序。
redis有序集合新增、刪除和測試的時間複雜度均為o(1)(固定時間,無論裡面包含的元素集合的數量)。列表的最大長度為2^32- 1元素(4294967295,超過40億每個元素的集合)。
redis sorted set的內部使用hashmap和跳躍表(skiplist)來保證資料的儲存和有序,hashmap裡放的是成員到score的對映,而跳躍表裡存放的是所有的成員,排序依據是hashmap裡存的score,使用跳躍表的結構可以獲得比較高的查詢效率,並且在實現上比較簡單。
redis sorted set的使用場景與set類似,區別是set不是自動有序的,而sorted set可以通過使用者額外提供乙個優先順序(score)的引數來為成員排序,並且是插入有序的,即自動排序。當你需要乙個有序的並且不重複的集合列表,那麼可以選擇sorted set資料結構,比如twitter 的public timeline可以以發表時間作為score來儲存,這樣獲取時就是自動按時間排好序的。
又比如使用者的積分排行榜需求就可以通過有序集合實現。還有上面介紹的使用list實現輕量級的訊息佇列,其實也可以通過sorted set實現有優先順序或按權重的佇列。
redis 基本資料型別基本操作
string string hash hashmap list linkedlist set hashset sorted set tree set 設定數值資料減少指定範圍的值 設定資料的過期時間 psetex key milliseconds value 設定指定欄位的數值資料增加指定範圍的值 ...
redis基本操作及資料型別命令
資料型別 string 字串 list 鍊錶 hash 雜湊 set 集合 zsort 有序集合 預設16個資料庫,可通過配置檔案修改。基本操作 關於訪問中文顯示時是亂碼,解決辦法是啟動客戶端時加入 raw redis cli raw config set requirepass 123456 設定...
Redis 基本資料型別的操作
zadd 將乙個或多個member 元素加入到有序集合中 zrem 刪除 zcard 元素個數 zrank 獲取成員的排名 從小到大排列 param args public static void main string args 常用方法 valuekey1 value1 結構 key value...