標籤:string 類型 coding bubuko int 預設 ima 對象 技術
Redis基礎資料型別 (Elementary Data Type)
Redis目前支援5種資料類型,分別是:
String(字串)
List(列表)
Hash(字典)
Set(集合)
Sorted Set(有序集合)
下面就分別介紹這五種資料類型及其相應的操作命令。
String(字串)
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後還原序列化
List(列表)
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
Hash(字典)
Redis Hash對應Value內部實際就是一個HashMap,實際這裡會有2種不同實現,這個Hash的成員比較少時Redis為了節省記憶體會採用類似一維數組的方式來緊湊儲存,而不會採用真正的HashMap結構,對應的value redisObject的encoding為zipmap,當成員數量增大時會自動轉成真正的HashMap,此時encoding為ht。
Set(集合)
Redis的Set是string類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重複的資料。
Redis 中 集合是通過雜湊表實現的,所以添加,刪除,尋找的複雜度都是O(1)。
集合中最大的成員數為 232 - 1 (4294967295, 每個集合可儲存40多億個成員)。
Sorted Set(有序集合)
Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
有序集合的成員是唯一的,但分數(score)卻可以重複。
集合是通過雜湊表實現的,所以添加,刪除,尋找的複雜度都是O(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集合可儲存40多億個成員)。
通過視覺化檢視 Redis Client:
預設都是在db0的哦
redis資料類型