Redis資料結構

2021-09-27 06:47:23 字數 3114 閱讀 2866

redis支援五種資料型別:string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)。

string 是 redis 最基本的型別,乙個 key 對應乙個 value。string 型別是二進位制安全的。意思是redis 的 string 可以包含任何資料,比如jpg或者序列化的物件。string 型別是 redis 最基本的資料型別,string 型別的值最大能儲存 512mb。

127.0.0.1:6379>set username xiaoluo

"ok"

127.0.0.1:6379>get username

"xiaoluo"

redis hash 是乙個鍵值(key=>value)對集合。hash 是乙個 string 型別的 field 和 value 的對映表,hash 特別適合用於儲存物件。每個 hash 可以儲存 232 -1 鍵值對(40多億)。

127.0.0.1:6379>hmset user name "xiaoluo" age 18

"ok"

127.0.0.1:6379>hget user name

"xiaoluo"

127.0.0.1:6379>hget user age

"18"

127.0.0.1:6379>del user

"1" 

redis 列表是簡單的字串列表,按照插入順序排序。你可以新增乙個元素到列表的頭部(左邊)或者尾部(右邊)。列表最多可儲存 232 - 1 元素 (4294967295, 每個列表可儲存40多億)。

lpush key value [value ...]

將乙個或多個值 value 插入到列表 key 的表頭

如果有多個 value 值,那麼各個 value 值按從左到右的順序依次插入到表頭。

rpush key value [value ...]

將乙個或多個值 value 插入到列表 key 的表尾(最右邊)。

如果有多個 value 值,那麼各個 value 值按從左到右的順序依次插入到表尾。

lrange key start stop

返回列表 key 中指定區間內的元素,區間以偏移量 start 和 stop 指定。

下標(index)引數 start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第乙個元素,以 1 表示列表的第二個元素,以此類推。

你也可以使用負數下標,以 -1 表示列表的最後乙個元素, -2 表示列表的倒數第二個元素,以此類推。超出範圍的下標值不會引起錯誤。

127.0.0.1:6379>lpush strlist 1

"1"127.0.0.1:6379>lpush strlist "3"

"2"127.0.0.1:6379>rpush strlist hello

"3"127.0.0.1:6379>lrange strlist 0 -1

1)  "3"

2)  "1"

3)  "hello"

127.0.0.1:6379>lrange strlist 0 10

1)  "3"

2)  "1"

3)  "hello"

redis 的 set 是 string 型別的無序集合。集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是 o(1)。集合中最大的成員數為 232 - 1(4294967295, 每個集合可儲存40多億個成員)。

sadd key member [member ...]

將乙個或多個 member 元素加入到集合 key 當中,已經存在於集合的 member 元素將被忽略。

smembers key

返回集合 key 中的所有成員。

127.0.0.1:6379>sadd myset hello

"1"127.0.0.1:6379>sadd myset world

"1"127.0.0.1:6379>sadd myset hello

"0"127.0.0.1:6379>smembers myset

1)  "world"

2)  "hello"

redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯乙個數值型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。

zadd key score member [[score member] [score member] ...]

將乙個或多個 member 元素及其 score 值加入到有序集 key 當中。

如果某個 member 已經是有序集的成員,那麼更新這個 member 的 score 值,並通過重新插入這個 member 元素,來保證該 member 在正確的位置上。score 值可以是整數值或雙精度浮點數。

zrange key start stop [withscores]

返回有序集 key 中,指定區間內的成員。其中成員的位置按 score 值遞增(從小到大)來排序。具有相同 score 值的成員按字典序(lexicographical order )來排列。如果你需要成員按 score 值遞減(從大到小)來排列,請使用 zrevrange

命令。

127.0.0.1:6379>zadd mysortedset 1 alibaba

Redis資料結構

字典 dict 是redis裡最核心的資料結構,正如其全稱remote dictionary service所說,redis其實就是乙個字典服務,字典以key value的形式呈現給使用者,key是簡單的字串,而value可以是各種資料結構,比如字串 string 鍊錶 list 集合 set 排序...

Redis 資料結構

最近接觸到了redis的使用,借這個機會深入的了解一下redis的實現和設計原理。下面先介紹一下redis底層所用到的資料結構。redis的實現幾乎都是基於下面的幾個資料結構之上的。struct sdshdr struct listnode struct list struct dictentry ...

redis 資料結構

今天學習了redis的列表型別 lpush ltrim lrange lpush mylist content ltrim 0,99 lrange 0,1 lrange 兩個引數 分別代表第乙個元素和最後乙個元素 redis的列表型別,可以用來做訊息佇列 使用乙個程序 用lpush命名作為生產者 使...