Redis5種主要資料型別和命令

2021-09-12 03:03:50 字數 4829 閱讀 7245

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,返回被刪除的個數

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

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

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

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

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

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

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

四:集合型別(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新集合中

隨機獲取元素: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的成員。

redis命令多,記錄下以防忘記時可以查

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

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...