Redis 5種主要資料型別和命令

2021-09-29 22:45:22 字數 4883 閱讀 8085

redis是鍵值對的資料庫,有5中主要資料型別:

字串型別(string),雜湊型別(hash),列表型別(list),集合型別(set),有序集合型別(zset)

幾個基本的命令:

keys * 獲得當前資料庫的所有鍵

exists key [key …] 判斷鍵是否存在,返回個數,如果key有一樣的也是疊加數

del key [key …] 刪除鍵,返回刪除的個數

type key 獲取減值的資料型別(string,hash,list,set,zset)

flushall 清空所有資料庫

config [get、set] redis配置

-inf 負無窮

+inf正無窮

一:字串型別string

字串型別是redis的最基本型別,它可以儲存任何形式的字串。其它的四種型別都是字串型別的不同形式。

最基本的命令:get、set 語法:get key,set key value value如果有空格需要雙引號以示區分

整數遞增:incr 語法:incr key 預設值為0,所以首先執行命令得到 1 ,不是整型提示錯誤

增加指定的整數:incrby 語法:incrby key increment

整數遞減:decr 語法:decr key 預設值為0,所以首先執行命令得到 -1,不是整型提示錯誤

減少指定的整數:decrby 語法:decrby key increment

增加指定浮點數:incrbyfloat 語法:incrbyfloat key increment 與incr命令類似,只不過可以遞增乙個雙精度浮點數

獲取字串長度:strlen 語法:strlen key 如果鍵不存在返回0,注意如果有中文時,乙個中文長度是3,redis是使用utf-8編碼中文的

獲取多個鍵值:mget 語法:mget key [key …] 例如:mget key1 key2

設定多個鍵值:mset 語法:mset key value [key value …] 例如:mset key1 1 key2 「hello redis」

二進位制指定位置值:getbit 語法:getbit key offset 例如:getbit key1 2 ,key1為hello 返回 1,返回的值只有0或1,

當key不存在或超出實際長度時為0

設定二進位制位置值:setbit 語法:setbit key offset value ,返回該位置的舊值

二進位制是1的個數:bitcount 語法:bitcount key [start end] ,start 、end為開始和結束位元組

位運算:bitop 語法:bitop operation destkey key [key …] ,operation支援and、or、xor、not

偏移:bitpos 語法:bitpos key bit [start] [end]

二:雜湊型別hash

設定單個:hset 語法:hset key field value,不存在時返回1,存在時返回0,沒有更新和插入之分

設定多個:hmset 語法:hmset key field value [field value …]

讀取單個:hget 語法:hget key field,不存在是返回nil

讀取多個:hmget 語法:hmget key field [field …]

讀取全部:hgetall 語法:hgetall key,返回時字段和字段值的列表

判斷字段是否存在:hexists 語法:hexists key field,存在返回1 ,不存在返回0

欄位不存在時賦值:hsetnx 語法:hsetnx key field value,與hset命令不同,hsetnx是鍵不存在時設定值

增加數字:hincrby 語法:hincrby key field increment ,返回增加後的數,不是整數時會提示錯誤

刪除字段:hdel 語法:hdel key field [field …] ,返回被刪除欄位的個數

只獲取欄位名:hkeys 語法:hkeys key ,返回鍵的所有欄位名

只獲取字段值:hvals 語法:hvals key ,返回鍵的所有字段值

字段數量:hlen 語法:hlen key ,返回字段總數

三:列表型別(list)

內部使用雙向鍊錶實現,所以獲取越接近兩端的元素速度越快,但通過索引訪問時會比較慢

新增左邊元素:lpush 語法:lpush key value [value …] ,返回新增後的列表元素的總個數

新增右邊元素:rpush 語法:rpush key value [value …] ,返回新增後的列表元素的總個數

移除左邊第乙個元素:lpop 語法:lpop key ,返回被移除的元素值

移除右邊第乙個元素:rpop 語法:rpop key ,返回被移除的元素值

列表元素個數:llen 語法:llen key, 不存在時返回0,redis是直接讀取現成的值,並不是統計個數

獲取列表片段:lrange 語法:lrange key start stop,如果start比stop靠後時返回空列表,0 -1 返回整個列表

正數時:start 開始索引值,stop結束索引值(索引從0開始)

負數時:例如 lrange num -2 -1,-2表示最右邊第二個,-1表示最右邊第乙個,

刪除指定值:lrem 語法:lrem key count value,返回被刪除的個數

1.count>0,從左邊開始刪除前count個值為value的元素

2.count<0,從右邊開始刪除前|count|個值為value的元素

3.count=0,刪除所有值為value的元素

索引元素值:lindex 語法:lindex key index ,返回索引的元素值,-1表示從最右邊的第一位

設定元素值:lset 語法:lset key index value

乙個列表轉移另乙個列表:rpoplpush 語法:rpoplpush source desctination ,從source列表轉移到desctination列表,

該命令分兩步看,首先source列表rpop右移除,再desctination列表lpush

1四:集合型別(set)

集合型別值具有唯一性,常用操作是向集合新增、刪除、判斷某個值是否存在,集合內部是使用值為空的雜湊表實現的。

新增元素:sadd 語法:sadd key member [member …] ,向乙個集合新增乙個或多個元素,因為集合的唯一性,所以新增相同值時會被忽略。

返回成功新增元素的數量。

刪除元素:srem 語法:srem key member [member …] 刪除集合中乙個或多個元素,返回成功刪除的個數。

獲取全部元素:smembers 語法:smembers key ,返回集合全部元素

值是否存在:sismember 語法:sismember key member ,如果存在返回1,不存在返回0

差運算:sdiff 語法:sdiff key [key …] ,例如:集合a和集合b,差集表示a-b,在a裡有的元素b裡沒有,返回差集合;多個集合(a-b)-c

交運算:sinter    語法:sinter key [key …],返回交集集合,每個集合都有的元素

並運算:sunion       語法:sunion key [key …],返回並集集合,所有集合的元素

集合元素個數:scard 語法:scard key ,返回集合元素個數

集合運算後儲存結果 語法:sdiffstroe destination key [key …] ,差運算並儲存到destination新集合中

sinterstroe destination key [key …],交運算並儲存到destination新集合中

sunionstroe destination key [key ...],並運算並儲存到destination新集合中
1

隨機獲取元素:srandmemger 語法:srandmember key [count],根據count不同有不同結果,count大於元素總數時返回全部元素

count>0 ,返回集合中count不重複的元素

count<0,返回集合中count的絕對值個元素,但元素可能會重複

彈出元素:spop 語法:spop key [count] ,因為集合是無序的,所以spop會隨機彈出乙個元素

五:有序集合型別

新增集合元素:zadd 語法:zadd key [nx|xx] [ch] [incr] score member [score member …],不存在新增,存在更新。

獲取元素分數:zscore 語法:zscore key member ,返回元素成員的score 分數

當分數一樣時,按元素排序
元素大到小:zrevrange 語法:zrevrange key start [withscores] ,與zrange區別在於zrevrange是從大到小排序

指定分數範圍元素:zrangebyscore 語法:zrangebyscore key min max [withscore] [limit offest count]

返回從小到大的在min和max之間的元素,( 符號表示不包含,例如:80-100,(80 100,

withscore返回帶分數

limit offest count 向左偏移offest個元素,並獲取前count個元素

指定分數範圍元素:zrevrangescore 語法:zrevrangebyscore key max min [withscore] [limit offest count]

與zrangebyscore類似,只不過該命令是從大到小排序的。

增加分數:zincrby 語法:zincrby key increment member ,注意是增加分數,返回增加後的分數;如果成員不存在,則新增乙個為0的成員。

Redis5種主要資料型別和命令

redis是鍵值對的資料庫,有5中主要資料型別 字串型別 string 雜湊型別 hash 列表型別 list 集合型別 set 有序集合型別 zset 幾個基本的命令 keys 獲得當前資料庫的所有鍵 exists key key 判斷鍵是否存在,返回個數,如果key有一樣的也是疊加數 del k...

redis儲存資料型別 Redis5資料型別詳解

redis5資料型別詳解 redis除了可以儲存鍵還可以儲存常見的5種資料型別,分別是 string list set hash zset。對於redis的命令有一部分是可以公用的,但是還有一些其他的命令是屬於特殊使用的。首先看看一張關於redis5種資料結構的對比 下邊就分別介紹5中國不同的資料結...

redis 5種資料型別應用場景

string 型別 簡單緩衝 常規計數 微博關注數 分布式id 分布鎖 結合lua指令碼 list 型別可以當作佇列和棧這兩種資料結構來進行使用 粉絲列表 關注列表 我關注了誰,誰關注了我 訊息時間線 訊息佇列 hash 型別hash 型別使用的就比較頻繁了,它可以把一組關聯的資料放入同乙個 key...