redis 常用資料結構

2021-09-25 22:11:06 字數 3172 閱讀 6945

redis支援5種常用的資料型別,這其實是存在很大的歧義。redis裡存的都是二進位制資料,其實就是位元組陣列(byte),這些位元組資料是沒有資料型別的,只有把它們按照合理的格式解碼後,可以變成乙個字串,整數或物件,此時才具有資料型別。

因此redis裡的string指的並不是字串,它其實表示的是一種最簡單的資料結構,即乙個key只能對應乙個value。這裡的key和value都是byte陣列,只不過key一般是由乙個字串轉換成的byte陣列,value則根據實際需要而定。

在特定情況下,對value也會有一些要求,比如要進行自增或自減操作,那value對應的byte陣列必須要能被解碼成乙個數字才行,否則會報錯。

那麼list這種資料結構,其實表示乙個key可以對應多個value,且value之間是有先後順序的,value值可以重複。

set這種資料結構,表示乙個key可以對應多個value,且value之間是沒有先後順序的,value值也不可以重複。

hash這種資料結構,表示乙個key可以對應多個key-value對,此時這些key-value對之間的先後順序一般意義不大,這是乙個按照名稱語義來訪問的資料結構,而非位置語義。

sorted set這種資料結構,表示乙個key可以對應多個value,value之間是有大小排序的,value值不可以重複。每個value都和乙個浮點數相關聯,該浮點數叫score。元素排序規則是:先按score排序,再按value排序。

hset | hmset key field value

hget | hmget key field

hgetall key

hexists key field 判斷字段是否存在

hsetnx key field value 當字段不存在時賦值

hincrby key field value 增加數字

hdel key field [field…] 刪除字段

hkeys key;hvals key 只獲取欄位名或字段值

hlen key 獲得字段數量

hincrby key field increment

lpush rpush

lrange key start stop;0 -1 獲取所有

lpop rpop blpop brpop 彈出乙個元素

llen 列表元素個數

lrem key count value,刪除列表中前count個值為value 的元素

lindex key index 獲取指定索引的元素值,下標從0 開始

lset key index value 設定指定索引的元素值

ltrim key start end 保留列表指定片段

linsert key before|after pivot value,在指定元素povit的前面或者後面插入元素

rpoplpush 將元素從乙個列表轉換到另乙個列表(彈出乙個元素)

sadd | srem key member

smembers key 獲取集合中的所有元素

sismember key member 判斷元素是否在集合中

集合間運算

sdiff key [key…],差集

sinter key [key…],交集

sunion key [key…],並集

scard 獲得集合中元素個數

sdiffstore | sinterstore | sunoinstore destination key [key …],進行集合運算並將結果儲存

srandmember key [count] 隨機獲取集合中的元素

spop 隨機彈出乙個元素

srem key member1 member2,移除集合中乙個或多個元素

smove source destination member,將member元素從source集合移動到destination集合

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

zadd key score member [score member],增加元素,也可以用該命令修改分數

zscore key member 獲得元素的分數

獲得排序在某個範圍的元素列表

zrange key start stop [withscores] start|stop都是索引,從0開始。公升序

zrevrange key start stop [withscores] 降序

zrangebyscore key min max [withscores] [limit offset count] 獲取指定分數範圍的元素(包括min和max)

zincrby key increment member 增加某個元素的分數

zcard key 獲得集合中元素的數量

zcount key min max 獲得指定分數範圍內的元素個數

zrem key member [member…] 刪除乙個或多個元素

zremrangebyrank key start stop 按照排名範圍刪除元素 [start, stop]

zremrangebyscore key min max 按照分數範圍刪除元素

獲的元素的排名

zrank key member

zrevrank key member

有序集合的交集

keys pattern 獲得復合規則的鍵名列表 keys * 獲取所有鍵; keys user* 獲取所有test開頭的鍵

exists key 判斷乙個鍵是否存在 1存在,0不存在

del key 刪除鍵

type key 獲得鍵值的資料型別

flushdb 清除當前庫中的所有key

flushall 刪除所有資料庫的所有key

sort key [by pattern] [limit offset count] [get pattern [get pattern …]] [asc | desc] [alpha] [store destination] 返回或儲存給定列表、集合、有序集合 key 中經過排序的元素;排序預設以數字作為物件,值被解釋為雙精度浮點數,然後進行比較。

ttl key 檢視key的過期時間 -1未設定過期時間,-2不存在的key

select index 切換資料庫

更多命令參見:

redis常用資料結構

redis是乙個開源的key value儲存引擎,它支援string hash list set和sorted set等多種值型別。由於其卓越的效能表現 豐富的資料型別及穩定性,廣泛用於各種需要k v儲存的場景。甚至在一些分布式快取系統中,也用它作為底層儲存引擎。本文對redis最常用的資料型別進行...

Redis中常用的資料結構

redis是一種非關係型資料庫,常用的資料型別主要有五種,分別為string,list,hash,set,zset,那麼他們對應的資料結構分別是什麼呢?顧名思義,字串的資料型別最簡單,就是使用了string,沒有用到複雜的資料結構。列表 list 支援儲存一組資料,對應的資料結構有兩種,一種是壓縮列...

Redis資料結構

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