Redis列表集合

      網(wǎng)友投稿 701 2022-05-30

      前面文章我們介紹了STRING的基本命令,本文我們來(lái)看看Redis中的列表與集合。

      本文是Redis系列的第五篇文章,了解前面的文章有助于更好的理解本文:

      1.Linux上安裝Redis

      2.Redis中的五種數(shù)據(jù)類(lèi)型簡(jiǎn)介

      3.Redis字符串(STRING)介紹

      4.Redis字符串(STRING)中BIT相關(guān)命令

      列表

      列表是Redis中另外一種數(shù)據(jù)類(lèi)型。下面我們來(lái)看看列表中一些基本的操作命令。

      LPUSH

      將一個(gè)或多個(gè)值value插入到列表key的表頭,如果有多個(gè)value值,那么各個(gè)value值按從左到右的順序依次插入到表頭,如下:

      127.0.0.1:6379>?LPUSH?k1?v1?v2?v3(integer)?3

      LRANGE

      返回列表key中指定區(qū)間內(nèi)的元素,區(qū)間以偏移量start和stop指定,下標(biāo)(index)參數(shù)start和stop都以0為底,即0表示列表的第一個(gè)元素,1表示列表的第二個(gè)元素,以此類(lèi)推。我們也可以使用負(fù)數(shù)下標(biāo),以-1表示列表的最后一個(gè)元素, -2 表示列表的倒數(shù)第二個(gè)元素,以此類(lèi)推。如下:

      127.0.0.1:6379>?LRANGE?k1?0?-11)?"v3"2)?"v2"3)?"v1"

      RPUSH

      RPUSH與LPUSH的功能基本一致,不同的是RPUSH的中的value值是按照從右到左的順序依次插入,如下:

      127.0.0.1:6379>?RPUSH?k2?1?2?3?4?5(integer)?5127.0.0.1:6379>?LRANGE?k2?0?-11)?"1"2)?"2"3)?"3"4)?"4"5)?"5"

      RPOP

      RPOP命令可以移除并返回列表key的尾元素。如下:

      127.0.0.1:6379>?RPOP?k2"5"127.0.0.1:6379>?LRANGE?k2?0?-11)?"1"2)?"2"3)?"3"4)?"4"

      LPOP

      LPOP和RPOP類(lèi)似,不同的是LPOP移除并返回列表key的頭元素,如下:

      127.0.0.1:6379>?LPOP?k2"1"127.0.0.1:6379>?LRANGE?k2?0?-11)?"2"2)?"3"3)?"4"

      LINDEX

      LINDEX命令可以返回列表key中,下標(biāo)為index的元素,正數(shù)下標(biāo)0表示第一個(gè)元素,也可以使用負(fù)數(shù)下標(biāo),-1表示倒數(shù)第一個(gè)元素,如下:

      127.0.0.1:6379>?LINDEX?k2?0"2"127.0.0.1:6379>?LINDEX?k2?-1"4"

      LTRIM

      LTRIM命令可以對(duì)一個(gè)列表進(jìn)行修剪,即讓列表只保留指定區(qū)間內(nèi)的元素,不在指定區(qū)間之內(nèi)的元素都將被刪除。下標(biāo)與之前介紹的寫(xiě)法都一致,這里不贅述。如下:

      127.0.0.1:6379>?LRANGE?k1?0?-11)?"v3"2)?"v2"3)?"v1"127.0.0.1:6379>?LTRIM?k1?0?1OK127.0.0.1:6379>?LRANGE?k1?0?-11)?"v3"2)?"v2"

      BLPOP

      BLPOP是阻塞式列表的彈出原語(yǔ)。它是命令LPOP的阻塞版本,當(dāng)給定列表內(nèi)沒(méi)有任何元素可供彈出的時(shí)候,連接將被BLPOP命令阻塞。當(dāng)給定多個(gè)key參數(shù)時(shí),按參數(shù)key的先后順序依次檢查各個(gè)列表,彈出第一個(gè)非空列表的頭元素。同時(shí),在使用該命令時(shí)也需要指定阻塞的時(shí)長(zhǎng),時(shí)長(zhǎng)單位為秒,在該時(shí)長(zhǎng)內(nèi)如果沒(méi)有元素可供彈出,則阻塞結(jié)束。返回的結(jié)果是key和value的組合,如下:

      127.0.0.1:6379>?BLPOP?k1?101)?"k1"2)?"v2"127.0.0.1:6379>?BLPOP?k1?10(nil)(10.03s)

      最后,BRPOP、BPOPLPUSH、BRPOPLPUSH都是相應(yīng)命令的阻塞版本,這里就不贅述了。

      集合

      接下來(lái)我們來(lái)看看集合中一些常見(jiàn)的操作命令:

      SADD

      SADD命令可以添加一個(gè)或多個(gè)指定的member元素到集合的key中,指定的一個(gè)或者多個(gè)元素member如果已經(jīng)在集合key中存在則忽略,如果集合key不存在,則新建集合key,并添加member元素到集合key中。如下:

      127.0.0.1:6379>?SADD?k1?v1?v2?v3?v4(integer)?4

      SREM

      SREM命令可以在key集合中移除指定的元素,如果指定的元素不是key集合中的元素則忽略。如果key集合不存在則被視為一個(gè)空的集合,該命令返回0。如下:

      127.0.0.1:6379>?SREM?k1?v2(integer)?1127.0.0.1:6379>?SREM?k1?v10(integer)?0

      SISMEMBER

      SISMEMBER命令可以返回成員member是否是存儲(chǔ)的集合key的成員。如下:

      127.0.0.1:6379>?SISMEMBER?k1?v3(integer)?1

      SCARD

      SCARD命令可以返回集合存儲(chǔ)的key的基數(shù)(集合元素的數(shù)量),如下:

      127.0.0.1:6379>?SCARD?k1(integer)?3

      SMEMBERS

      SMEMBERS命令可以返回key集合所有的元素,如下:

      127.0.0.1:6379>?SMEMBERS?k11)?"v4"2)?"v1"3)?"v3"

      SRANDMEMBER

      SRANDMEMBER僅需我們提供key參數(shù),它就會(huì)隨機(jī)返回key集合中的一個(gè)元素,從Redis2.6開(kāi)始,該命令也可以接受一個(gè)可選的count參數(shù),如果count是整數(shù)且小于元素的個(gè)數(shù),則返回count個(gè)隨機(jī)元素,如果count是整數(shù)且大于集合中元素的個(gè)數(shù)時(shí),則返回集合中的所有元素,當(dāng)count是負(fù)數(shù),則會(huì)返回一個(gè)包含count的絕對(duì)值的個(gè)數(shù)元素的數(shù)組,如果count的絕對(duì)值大于元素的個(gè)數(shù),則返回的結(jié)果集里會(huì)出現(xiàn)一個(gè)元素出現(xiàn)多次的情況。如下:

      127.0.0.1:6379>?SRANDMEMBER?k1"v4"127.0.0.1:6379>?SRANDMEMBER?k1?21)?"v4"2)?"v1"127.0.0.1:6379>?SRANDMEMBER?k1?51)?"v4"2)?"v1"3)?"v3"127.0.0.1:6379>?SRANDMEMBER?k1?-11)?"v4"127.0.0.1:6379>?SRANDMEMBER?k1?-51)?"v3"2)?"v1"3)?"v1"4)?"v3"5)?"v3"

      SPOP

      SPOP命令的用法和SRANDMEMBER類(lèi)似,不同的是,SPOP每次選擇一個(gè)隨機(jī)的元素之后,該元素會(huì)出棧,而SRANDMEMBER則不會(huì)出棧,只是將該元素展示出來(lái)。

      Redis列表與集合

      SMOVE

      SMOVE命令可以將member從source集合移動(dòng)到destination集合中,如下:

      127.0.0.1:6379>?SMOVE?k1?k2?v1(integer)?1127.0.0.1:6379>?SMEMBERS?k11)?"v4"2)?"v3"127.0.0.1:6379>?SMEMBERS?k21)?"v1"

      SDIFF

      SDIFF可以用來(lái)返回一個(gè)集合與給定集合的差集的元素,如下:

      127.0.0.1:6379>?SDIFF?k1?k21)?"v4"2)?"v3"

      k1中的元素是v3、v4,k2中的元素是v1,差集就是v3、v4.

      SDIFFSTORE

      SDIFFSTORE命令與SDIFF命令基本一致,不同的是SDIFFSTORE命令會(huì)將結(jié)果保存在一個(gè)集合中,如下:

      127.0.0.1:6379>?SDIFFSTORE?key?k1?k2(integer)?2127.0.0.1:6379>?SMEMBERS?key1)?"v4"2)?"v3"

      SINTER

      SINTER命令可以用來(lái)計(jì)算指定key之間元素的交集,如下:

      127.0.0.1:6379>?SMEMBERS?k11)?"v4"2)?"v3"127.0.0.1:6379>?SMEMBERS?k21)?"v1"2)?"v3"127.0.0.1:6379>?SINTER?k1?k21)?"v3"

      SINTERSTORE

      SINTERSTORE命令和SINTER命令類(lèi)似,不同的是它會(huì)將結(jié)果保存到一個(gè)新的集合中,如下:

      127.0.0.1:6379>?SINTERSTORE?k3?k1?k2(integer)?1127.0.0.1:6379>?SMEMBERS?k31)?"v3"

      SUNION

      SUNION可以用來(lái)計(jì)算兩個(gè)集合的并集,如下:

      127.0.0.1:6379>?SUNION?k1?k21)?"v4"2)?"v1"3)?"v3"

      SUNIONSTORE

      SUNIONSTORE和SUNION命令類(lèi)似,不同的是它會(huì)將結(jié)果保存到一個(gè)新的集合中,如下:

      127.0.0.1:6379>?SUNIONSTORE?k4?k1?k2(integer)?3127.0.0.1:6379>?SMEMBERS?k41)?"v4"2)?"v1"3)?"v3"

      OK,列表和集合的命令我們就介紹這么多,更多命令小伙伴們可以參考官方文檔http://www.redis.cn/commands.html。小伙伴在看官方文檔時(shí),有什么問(wèn)題歡迎留言討論。

      Redis

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:高性能Web動(dòng)畫(huà)和渲染原理系列(5)合成層的生成條件和陷阱
      下一篇:2小時(shí)快速構(gòu)筑運(yùn)維監(jiān)控大屏
      相關(guān)文章
      亚洲一区二区三区AV无码| 国产精品亚洲专一区二区三区| 亚洲精品成a人在线观看| 亚洲精品国产综合久久久久紧| 亚洲一区二区三区免费观看| 亚洲va在线va天堂va不卡下载| 国产成人亚洲影院在线观看| 亚洲精品WWW久久久久久| 亚洲精品乱码久久久久久蜜桃| 在线91精品亚洲网站精品成人| 久久久亚洲精华液精华液精华液 | 精品国产_亚洲人成在线高清| 国产精品亚洲αv天堂无码| 亚洲中文字幕无码永久在线| 亚洲精品NV久久久久久久久久| 无码国产亚洲日韩国精品视频一区二区三区| 亚洲av最新在线观看网址| 最新国产精品亚洲| 亚洲精品乱码久久久久蜜桃| 色综合久久精品亚洲国产| 亚洲AⅤ无码一区二区三区在线| 久久精品国产亚洲AV电影网| 亚洲AV中文无码乱人伦在线视色| 亚洲国产a级视频| 国产国拍亚洲精品福利| 亚洲国产精品VA在线观看麻豆 | 亚洲欧美日韩自偷自拍| 亚洲精品乱码久久久久蜜桃| 国产亚洲视频在线播放大全| 亚洲人成网站色在线入口| 亚洲一区二区三区在线观看精品中文| 亚洲国产综合无码一区| 亚洲国产精品lv| 亚洲国产亚洲片在线观看播放| 国产99在线|亚洲| 激情小说亚洲色图| 亚洲愉拍99热成人精品热久久| 亚洲av一综合av一区| 久久久久无码精品亚洲日韩| 久久亚洲AV成人出白浆无码国产| 亚洲视频日韩视频|