redis中5種數(shù)據(jù)類(lèi)型基本命令介紹

redis是鍵值對(duì)的數(shù)據(jù)庫(kù),有5中主要數(shù)據(jù)類(lèi)型:

字符串類(lèi)型(string),散列類(lèi)型(hash),列表類(lèi)型(list),集合類(lèi)型(set),有序集合類(lèi)型(zset)

幾個(gè)基本的命令:

函數(shù)說(shuō)明

keys *獲得當(dāng)前數(shù)據(jù)庫(kù)的所有鍵

exists key [key ...]判斷鍵是否存在,返回個(gè)數(shù),如果key有一樣的也是疊加數(shù)

del key [key ...]刪除鍵,返回刪除的個(gè)數(shù)

type key獲取減值的數(shù)據(jù)類(lèi)型(string,hash,list,set,zset)

flushall清空所有數(shù)據(jù)庫(kù)

config [get、set]redis配置

-inf 負(fù)無(wú)窮

+inf正無(wú)窮

一:字符串類(lèi)型(string)

字符串類(lèi)型是Redis的最基本類(lèi)型,它可以存儲(chǔ)任何形式的字符串。其它的四種類(lèi)型都是字符串類(lèi)型的不同形式。

函數(shù)語(yǔ)法

最基本的命令:GET、SETGET key,SET key value ? value如果有空格需要雙引號(hào)以示區(qū)分

整數(shù)遞增:INCRINCR key ? ?默認(rèn)值為0,所以首先執(zhí)行命令得到 1 ,不是整型提示錯(cuò)誤

增加指定的整數(shù):INCRBYINCRBY key increment

整數(shù)遞減:DECRDECR key ? 默認(rèn)值為0,所以首先執(zhí)行命令得到 -1,不是整型提示錯(cuò)誤

減少指定的整數(shù):DECRBYDECRBY key increment

增加指定浮點(diǎn)數(shù):INCRBYFLOATINCRBYFLOAT key increment ?與INCR命令類(lèi)似,只不過(guò)可以遞增一個(gè)雙精度浮點(diǎn)數(shù)

向尾部追加值:APPENDAPPEND key value ? redis客戶(hù)端并不是輸出追加后的字符串,而是輸出字符串總長(zhǎng)度

獲取字符串長(zhǎng)度:STRLENSTRLEN key ?如果鍵不存在返回0,注意如果有中文時(shí),一個(gè)中文長(zhǎng)度是3,redis是使用UTF-8編碼中文的

獲取多個(gè)鍵值:MGETMGET key [key ...] ?例如:MGET key1 key2

設(shè)置多個(gè)鍵值:MSETMSET key value [key value ...] ?例如:MSET key1 1 key2 "hello redis"

二進(jìn)制指定位置值:GETBITGETBIT key offset ? 例如:GETBIT key1 2 ,key1為hello 返回 1,返回的值只有0或1,當(dāng)key不存在或超出實(shí)際長(zhǎng)度時(shí)為0

設(shè)置二進(jìn)制位置值:SETBITSETBIT key offset value ,返回該位置的舊值

二進(jìn)制是1的個(gè)數(shù):BITCOUNTBITCOUNT key [start end] ,start 、end為開(kāi)始和結(jié)束字節(jié)

位運(yùn)算:BITOPBITOP operation destkey key [key ...] ?,operation支持AND、OR、XOR、NOT

偏移:BITPOSBITPOS key bit [start] [end]

二:散列類(lèi)型(hash)

函數(shù)語(yǔ)法

設(shè)置單個(gè):HSETHSET key field value,不存在時(shí)返回1,存在時(shí)返回0,沒(méi)有更新和插入之分

設(shè)置多個(gè):HMSET ? ?HMSET key field value [field value ...]

讀取單個(gè):HGETHGET key field,不存在是返回nil

讀取多個(gè):HMGETHMGET key field [field ...]

讀取全部:HGETALLHGETALL key,返回時(shí)字段和字段值的列表

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

字段不存在時(shí)賦值:HSETNXHSETNX key field value,與hset命令不同,hsetnx是鍵不存在時(shí)設(shè)置值

增加數(shù)字:HINCRBYHINCRBY key field increment ,返回增加后的數(shù),不是整數(shù)時(shí)會(huì)提示錯(cuò)誤

刪除字段:HDELHDEL key field [field ...] ,返回被刪除字段的個(gè)數(shù)

只獲取字段名:HKEYSHKEYS key ,返回鍵的所有字段名

只獲取字段值:HVALSHVALS key ?,返回鍵的所有字段值

字段數(shù)量:HLENHLEN key ,返回字段總數(shù)

三:列表類(lèi)型(list)

內(nèi)部使用雙向鏈表實(shí)現(xiàn),所以獲取越接近兩端的元素速度越快,但通過(guò)索引訪(fǎng)問(wèn)時(shí)會(huì)比較慢

函數(shù)語(yǔ)法

添加左邊元素:LPUSHLPUSH key value [value ...] ?,返回添加后的列表元素的總個(gè)數(shù)

添加右邊元素:RPUSHRPUSH key value [value ...] ?,返回添加后的列表元素的總個(gè)數(shù)

移除左邊第一個(gè)元素:LPOPLPOP key ?,返回被移除的元素值

移除右邊第一個(gè)元素:RPOPRPOP key ,返回被移除的元素值

列表元素個(gè)數(shù):LLENLLEN key, 不存在時(shí)返回0,redis是直接讀取現(xiàn)成的值,并不是統(tǒng)計(jì)個(gè)數(shù)

獲取列表片段:LRANGELRANGE

key start stop,如果start比stop靠后時(shí)返回空列表,0 -1 返回整個(gè)列表正數(shù)時(shí):start

開(kāi)始索引值,stop結(jié)束索引值(索引從0開(kāi)始)負(fù)數(shù)時(shí):例如 lrange num -2 -1,-2表示最右邊第二個(gè),-1表示最右邊第一個(gè),

刪除指定值:LREMLREM key count value,返回被刪除的個(gè)數(shù)

count>0,從左邊開(kāi)始刪除前count個(gè)值為value的元素

count<0,從右邊開(kāi)始刪除前|count|個(gè)值為value的元素

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

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

設(shè)置元素值:LSETLSET key index value

保留列表片段:LTRIMLTRIM key start stop,start、top 參考lrange命令

一個(gè)列表轉(zhuǎn)移另一個(gè)列表:RPOPLPUSHRPOPLPUSH source desctination ,從source列表轉(zhuǎn)移到desctination列表,該命令分兩步看,首先source列表RPOP右移除,再desctination列表LPUSH

四:集合類(lèi)型(set)

集合類(lèi)型值具有唯一性,常用操作是向集合添加、刪除、判斷某個(gè)值是否存在,集合內(nèi)部是使用值為空的散列表實(shí)現(xiàn)的。

函數(shù)語(yǔ)法

添加元素:SADDSADD key member [member ...] ,向一個(gè)集合添加一個(gè)或多個(gè)元素,因?yàn)榧系奈ㄒ恍?,所以添加相同值時(shí)會(huì)被忽略。返回成功添加元素的數(shù)量。

刪除元素:SREMSREM key member [member ...] 刪除集合中一個(gè)或多個(gè)元素,返回成功刪除的個(gè)數(shù)。

獲取全部元素:SMEMBERSSMEMBERS key ,返回集合全部元素

值是否存在:SISMEMBER

SISMEMBER key member ,如果存在返回1,不存在返回0

差運(yùn)算:SDIFF ?SDIFF key [key ...] ,例如:集合A和集合B,差集表示A-B,在A里有的元素B里沒(méi)有,返回差集合;多個(gè)集合(A-B)-C

交運(yùn)算:SINTERSINTER key [key ...],返回交集集合,每個(gè)集合都有的元素

并運(yùn)算:SUNION SUNION key [key ...],返回并集集合,所有集合的元素

集合元素個(gè)數(shù):SCARDSCARD key ,返回集合元素個(gè)數(shù)

集合運(yùn)算后存儲(chǔ)結(jié)果SDIFFSTROE

destination key [key ...] ,差運(yùn)算并存儲(chǔ)到destination新集合中SINTERSTROE

destination key [key ...],交運(yùn)算并存儲(chǔ)到destination新集合中SUNIONSTROE destination

key [key ...],并運(yùn)算并存儲(chǔ)到destination新集合中

隨機(jī)獲取元素:SRANDMEMGERSRANDMEMBER key [count],根據(jù)count不同有不同結(jié)果,count大于元素總數(shù)時(shí)返回全部元素count>0 ,返回集合中count不重復(fù)的元素count<0,返回集合中count的絕對(duì)值個(gè)元素,但元素可能會(huì)重復(fù)

彈出元素:SPOPSPOP key [count] ,因?yàn)榧鲜菬o(wú)序的,所以spop會(huì)隨機(jī)彈出一個(gè)元素

五:有序集合類(lèi)型 zset(sorted set:有序集合)

Redis zset 和 set 一樣也是string類(lèi)型元素的集合,且不允許重復(fù)的成員。

不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類(lèi)型的分?jǐn)?shù)。

redis正是通過(guò)分?jǐn)?shù)來(lái)為集合中的成員進(jìn)行從小到大的排序。zset的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)。

函數(shù)語(yǔ)法

添加集合元素:ZADDZADD key [NX|XX] [CH] [INCR] score member [score member ...],不存在添加,存在更新。

獲取元素分?jǐn)?shù):ZSCOREZSCORE key member ,返回元素成員的score 分?jǐn)?shù)

元素小到大:ZRANGEZRANGE key start top [WITHSCORES] ,參考LRANGE ,加上withscores 返回帶元素,即元素,分?jǐn)?shù)當(dāng)分?jǐn)?shù)一樣時(shí),按元素排序

元素大到?。篫REVRANGEZREVRANGE key start [WITHSCORES] ,與zrange區(qū)別在于zrevrange是從大到小排序

指定分?jǐn)?shù)范圍元素:ZRANGEBYSCOREZRANGEBYSCORE

key min max [WITHSCORE] [LIMIT offest count]返回從小到大的在min和max之間的元素,(

符號(hào)表示不包含,例如:80-100,(80 100,withscore返回帶分?jǐn)?shù)limit offest count

向左偏移offest個(gè)元素,并獲取前count個(gè)元素

指定分?jǐn)?shù)范圍元素:ZREVRANGESCOREZREVRANGEBYSCORE key max ?min [WITHSCORE] [LIMIT offest count]與zrangebyscore類(lèi)似,只不過(guò)該命令是從大到小排序的。

增加分?jǐn)?shù):ZINCRBYZINCRBY key increment member ,注意是增加分?jǐn)?shù),返回增加后的分?jǐn)?shù);如果成員不存在,則添加一個(gè)為0的成員。

本文來(lái)自PHP中文網(wǎng)的redis教程?欄目:https://www.php.cn/redis/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容