redis基礎(chǔ)學(xué)習(xí)(一)之?dāng)?shù)據(jù)類(lèi)型及其常用命令

最近因?yàn)橐恍┰蛴玫絉edis不得不學(xué)一點(diǎn),就想著記錄一下學(xué)習(xí)的印記。若有不對(duì)的地方還望指出為謝。

Redis (REmote DIctionary Server) 是用 C 語(yǔ)言開(kāi)發(fā)的一個(gè)開(kāi)源的高性能鍵值對(duì)(key-value)的非關(guān)系數(shù)據(jù)庫(kù),可以將存儲(chǔ)在內(nèi)存的鍵值對(duì)持久化到硬盤(pán),可使用復(fù)制特性來(lái)擴(kuò)展讀性能。

Redis提供了五種不同數(shù)據(jù)結(jié)構(gòu)類(lèi)型與鍵(key)的映射,分別是Strng(字符串)、hash(散列)、list(列表)、set(集合)、zset(有序集合)。如下:

相應(yīng)的命令:

Key的基本操作:

刪除指定key? ?del key

獲取key是否存在? exists key

獲取key的類(lèi)型? ? type key

改名rename key newkey ?renamenx key newkey

查詢(xún)key???keys pattern? ? ?pattern匹配規(guī)則:*匹配任意數(shù)量的任意符號(hào) ?配合一個(gè)任意符號(hào)[] 匹配一個(gè)指定符號(hào)


String類(lèi)型存儲(chǔ)的數(shù)據(jù):?jiǎn)蝹€(gè)數(shù)據(jù),最簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)類(lèi)型,也是最常用的數(shù)據(jù)存儲(chǔ)類(lèi)型,一般做一些復(fù)雜的計(jì)數(shù)功能的緩存。

添加/修改數(shù)據(jù)? set key value ???????添加/修改多個(gè)數(shù)據(jù)? mset key1 value1 key2 value2 …

獲取數(shù)據(jù)? ?get key ?????????????????獲取多個(gè)數(shù)據(jù) mget key1 key2 …

刪除數(shù)據(jù)? del key

判定性添加數(shù)據(jù)? setnx key value

獲取數(shù)據(jù)字符個(gè)數(shù)(字符串長(zhǎng)度)?strlen key

表示運(yùn)行結(jié)果(integer) 0 → false 失敗、(integer) 1 → true 成功如下圖判斷性加入name zhangsan 時(shí)因?yàn)榍懊嬗辛斯史祷?integer) 0 表示已經(jīng)存在


hash類(lèi)型:底層使用哈希表結(jié)構(gòu)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)

如field數(shù)量較少,存儲(chǔ)結(jié)構(gòu)為類(lèi)數(shù)組結(jié)構(gòu)否則存儲(chǔ)結(jié)構(gòu)使用HashMap結(jié)構(gòu)

添加/修改數(shù)據(jù)hset key field value (hmset key field1 value1 field2 value2 … ?多個(gè)時(shí))

獲取數(shù)據(jù)hget key field ?hgetall key(hmget key field1 field2 …)

刪除數(shù)據(jù)hdel key field1 [field2]

獲取哈希表中字段的數(shù)量hlen key

獲取哈希表中是否存在指定的字段hexists key field

list類(lèi)型:保存多個(gè)數(shù)據(jù),底層使用雙向鏈表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn),允許用戶(hù)從左右(left right)兩端推入或彈出數(shù)據(jù)

rpush key value [value...] 將一個(gè)或者多個(gè)值推入列表的右端

lpush key value [value...] 將一個(gè)或者多個(gè)值推入列表的左端

Rpop key 移除并返回列表最右端的元素

Lpop key 移除并返回列表最左端的元素

Lrange ?key ?start end 返回指定范圍內(nèi)的所以元素

Lindex key offset 返回偏移量為offset的元素


set類(lèi)型:以無(wú)序的的方式來(lái)存儲(chǔ)多個(gè)各不相同的元素,與hash存儲(chǔ)結(jié)構(gòu)完全相同,但是無(wú)法啟用hash中存儲(chǔ)值的空間。

Sadd ?key ?item ?[item.....] ???將元素加入到集合中并返回被添加元素當(dāng)中原本并不存在于集合里面的元素?cái)?shù)量

Smembers ?key 返回集合中所以的元素

Srem ?key ?item ?[item.....] ?移除元素返回移除數(shù)量

Sismember ?key item ?判斷集合是否包含item數(shù)據(jù)

Scard ?key ?獲取集合數(shù)據(jù)總量

Srandmember key ?[count] ??隨機(jī)獲取集合中指定數(shù)量的數(shù)據(jù)

Spop ?key ?[count] 隨機(jī)移除集合中的一個(gè)元素或者指定數(shù)量并返回移除的元素

Smove ?source-key ?dest-key item ?若是source-key包含item元素就從中移除item并加入到集合dest-key中,成功返回1否則返回0

求兩個(gè)集合的交、并、差集

sdiff ?key??[key ...]???返回存在于第一個(gè)集合但不存在與其他集合中的元素(數(shù)學(xué)上的差集運(yùn)算)

Sinter??key???[key ...?]??返回那些同時(shí)存在于所有集合中的元素(數(shù)學(xué)上的交集運(yùn)算)

Sunion??key??[key...]???返回那些至少存在于一個(gè)集合中的元素(數(shù)學(xué)上的并集計(jì)算)

求兩個(gè)集合的交、并、差集并存儲(chǔ)到指定集合中

sdiffstore dest-key ?key ?[key ...]?

sinterstore dest-key ?key ?[key ...]

sunionstore dest-key key??[key ...]

有序集合:存儲(chǔ)結(jié)構(gòu)和集合一樣但是集合是無(wú)序的,有序集合存儲(chǔ)著成員與分值之間的映射,并且提供了分值處理命令,以及根據(jù)分值大小有序地獲取或掃描成員和分值的命令。

zadd key??score member [score member ...]??將帶有給定分值的成員添加到有序集合里面

zrem key?member [member ...]???從有序集合里面移除給定的成員,并返回被移除成員的數(shù)量

zcard key???獲取集合數(shù)據(jù)總量

zrange key start stop ??返回有序集合中排名介于start和stop之間的成員

希望路過(guò)的大佬不要嫌棄,若有不對(duì)之處還希望指正為謝!@~@

?著作權(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)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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