redis目前支援5種資料型別,分別是:
string(字串)
list(列表)
hash(字典)
set(集合)
sorted set(有序集合)
下面就分別介紹這五種資料型別及其相應的操作命令。
string是簡單的 key-value 鍵值對,value 不僅可以是 string,也可以是數字。string在redis內部儲存預設就是乙個字串,被redisobject所引用,當遇到incr,decr等操作時會轉成數值型進行計算,此時redisobject的encoding欄位為int。
string在redis內部儲存預設就是乙個字串,被redisobject所引用,當遇到incr,decr等操作時會轉成數值型進行計算,此時redisobject的encoding欄位為int。
應用場景:
string是最常用的一種資料型別,普通的key/value儲存都可以歸為此類,這裡就不所做解釋了。
一般用string多 因為一般json多 redis存放物件就是json的 通過redis取得json後反序列化
redis列表是簡單的字串列表,可以模擬到c++中的std::list,簡單的說就是乙個鍊錶或者說是乙個佇列。可以從頭部或尾部向redis列表新增元素。列表的最大長度為2^32 - 1,也即每個列表支援超過40億個元素。
redis list的實現為乙個雙向鍊錶,即可以支援反向查詢和遍歷,更方便操作,不過帶來了部分額外的記憶體開銷,redis內部的很多實現,包括傳送緩衝佇列等也都是用的這個資料結構。
應用場景
redis list的應用場景非常多,也是redis最重要的資料結構之一,比如twitter的關注列表、粉絲列表等都可以用redis的list結構來實現,再比如有的應用使用redis的list型別實現乙個簡單的輕量級訊息佇列,生產者push,消費者pop/bpop。
存入三個值到list中
查詢:
從0到10
redis hash對應value內部實際就是乙個hashmap,實際這裡會有2種不同實現,這個hash的成員比較少時redis為了節省記憶體會採用類似一維陣列的方式來緊湊儲存,而不會採用真正的hashmap結構,對應的value redisobject的encoding為zipmap,當成員數量增大時會自動轉成真正的hashmap,此時encoding為ht。
redis的set是string型別的無序集合。集合成員是唯一的,這就意味著集合中不能出現重複的資料。
redis 中 集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是o(1)。
集合中最大的成員數為 232 - 1 (4294967295, 每個集合可儲存40多億個成員)。
redis 有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
有序集合的成員是唯一的,但分數(score)卻可以重複。
集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是o(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集合可儲存40多億個成員)。
通過視覺化工具 redis client:
預設都是在db0的哦
redis資料型別
redis對比與memcached 最大的優勢就是支援更多靈活的資料結構,豐富的資料操作 redis現支援的資料型別有 字串,列表,集合,雜湊,有序集合 1.字串 普通資料型別 2.列表 簡單的字串列表,按照插入順序排序。你可以新增乙個元素到列表的頭部 左邊 或者尾部 右邊 適用於 對資料頭尾操作頻...
Redis 資料型別
redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 string是redis最基本的型別,你可以理解成與memcached一模一樣的型別,乙個key對應乙個value。string型別是二進位制安全的。意思是red...
Redis 資料型別
redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 string是redis最基本的型別,你可以理解成與memcached一模一樣的型別,乙個key對應乙個value。string型別是二進位制安全的。意思是red...