您好,登錄后才能下訂單哦!
這篇文章主要講解了“Redis列表與集合怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Redis列表與集合怎么使用”吧!
列表是Redis中另外一種數據類型。下面我們來看看列表中一些基本的操作命令。
將一個或多個值value插入到列表key的表頭,如果有多個value值,那么各個value值按從左到右的順序依次插入到表頭,如下:
127.0.0.1:6379> LPUSH k1 v1 v2 v3 (integer) 3
返回列表key中指定區間內的元素,區間以偏移量start和stop指定,下標(index)參數start和stop都以0為底,即0表示列表的第一個元素,1表示列表的第二個元素,以此類推。我們也可以使用負數下標,以-1表示列表的最后一個元素, -2 表示列表的倒數第二個元素,以此類推。如下:
127.0.0.1:6379> LRANGE k1 0 -1 1) "v3" 2) "v2" 3) "v1"
RPUSH與LPUSH的功能基本一致,不同的是RPUSH的中的value值是按照從右到左的順序依次插入,如下:
127.0.0.1:6379> RPUSH k2 1 2 3 4 5 (integer) 5 127.0.0.1:6379> LRANGE k2 0 -1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5"
RPOP命令可以移除并返回列表key的尾元素。如下:
127.0.0.1:6379> RPOP k2 "5" 127.0.0.1:6379> LRANGE k2 0 -1 1) "1" 2) "2" 3) "3" 4) "4"
LPOP和RPOP類似,不同的是LPOP移除并返回列表key的頭元素,如下:
127.0.0.1:6379> LPOP k2 "1" 127.0.0.1:6379> LRANGE k2 0 -1 1) "2" 2) "3" 3) "4"
LINDEX命令可以返回列表key中,下標為index的元素,正數下標0表示第一個元素,也可以使用負數下標,-1表示倒數第一個元素,如下:
127.0.0.1:6379> LINDEX k2 0 "2" 127.0.0.1:6379> LINDEX k2 -1 "4"
LTRIM命令可以對一個列表進行修剪,即讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。下標與之前介紹的寫法都一致,這里不贅述。如下:
127.0.0.1:6379> LRANGE k1 0 -1 1) "v3" 2) "v2" 3) "v1" 127.0.0.1:6379> LTRIM k1 0 1 OK 127.0.0.1:6379> LRANGE k1 0 -1 1) "v3" 2) "v2"
BLPOP是阻塞式列表的彈出原語。它是命令LPOP的阻塞版本,當給定列表內沒有任何元素可供彈出的時候,連接將被BLPOP命令阻塞。當給定多個key參數時,按參數key的先后順序依次檢查各個列表,彈出第一個非空列表的頭元素。同時,在使用該命令時也需要指定阻塞的時長,時長單位為秒,在該時長內如果沒有元素可供彈出,則阻塞結束。返回的結果是key和value的組合,如下:
127.0.0.1:6379> BLPOP k1 10 1) "k1" 2) "v2" 127.0.0.1:6379> BLPOP k1 10 (nil) (10.03s)
最后,BRPOP、BPOPLPUSH、BRPOPLPUSH都是相應命令的阻塞版本,這里就不贅述了。
接下來我們來看看集合中一些常見的操作命令:
SADD命令可以添加一個或多個指定的member元素到集合的key中,指定的一個或者多個元素member如果已經在集合key中存在則忽略,如果集合key不存在,則新建集合key,并添加member元素到集合key中。如下:
127.0.0.1:6379> SADD k1 v1 v2 v3 v4 (integer) 4
SREM命令可以在key集合中移除指定的元素,如果指定的元素不是key集合中的元素則忽略。如果key集合不存在則被視為一個空的集合,該命令返回0。如下:
127.0.0.1:6379> SREM k1 v2 (integer) 1 127.0.0.1:6379> SREM k1 v10 (integer) 0
SISMEMBER命令可以返回成員member是否是存儲的集合key的成員。如下:
127.0.0.1:6379> SISMEMBER k1 v3 (integer) 1
SCARD命令可以返回集合存儲的key的基數(集合元素的數量),如下:
127.0.0.1:6379> SCARD k1 (integer) 3
SMEMBERS命令可以返回key集合所有的元素,如下:
127.0.0.1:6379> SMEMBERS k1 1) "v4" 2) "v1" 3) "v3"
SRANDMEMBER僅需我們提供key參數,它就會隨機返回key集合中的一個元素,從Redis2.6開始,該命令也可以接受一個可選的count參數,如果count是整數且小于元素的個數,則返回count個隨機元素,如果count是整數且大于集合中元素的個數時,則返回集合中的所有元素,當count是負數,則會返回一個包含count的絕對值的個數元素的數組,如果count的絕對值大于元素的個數,則返回的結果集里會出現一個元素出現多次的情況。如下:
127.0.0.1:6379> SRANDMEMBER k1 "v4" 127.0.0.1:6379> SRANDMEMBER k1 2 1) "v4" 2) "v1" 127.0.0.1:6379> SRANDMEMBER k1 5 1) "v4" 2) "v1" 3) "v3" 127.0.0.1:6379> SRANDMEMBER k1 -1 1) "v4" 127.0.0.1:6379> SRANDMEMBER k1 -5 1) "v3" 2) "v1" 3) "v1" 4) "v3" 5) "v3"
SPOP命令的用法和SRANDMEMBER類似,不同的是,SPOP每次選擇一個隨機的元素之后,該元素會出棧,而SRANDMEMBER則不會出棧,只是將該元素展示出來。
SMOVE命令可以將member從source集合移動到destination集合中,如下:
127.0.0.1:6379> SMOVE k1 k2 v1 (integer) 1 127.0.0.1:6379> SMEMBERS k1 1) "v4" 2) "v3" 127.0.0.1:6379> SMEMBERS k2 1) "v1"
SDIFF可以用來返回一個集合與給定集合的差集的元素,如下:
127.0.0.1:6379> SDIFF k1 k2 1) "v4" 2) "v3"
k1中的元素是v3、v4,k2中的元素是v1,差集就是v3、v4.
SDIFFSTORE命令與SDIFF命令基本一致,不同的是SDIFFSTORE命令會將結果保存在一個集合中,如下:
127.0.0.1:6379> SDIFFSTORE key k1 k2 (integer) 2 127.0.0.1:6379> SMEMBERS key 1) "v4" 2) "v3"
SINTER命令可以用來計算指定key之間元素的交集,如下:
127.0.0.1:6379> SMEMBERS k1 1) "v4" 2) "v3" 127.0.0.1:6379> SMEMBERS k2 1) "v1" 2) "v3" 127.0.0.1:6379> SINTER k1 k2 1) "v3"
SINTERSTORE命令和SINTER命令類似,不同的是它會將結果保存到一個新的集合中,如下:
127.0.0.1:6379> SINTERSTORE k3 k1 k2 (integer) 1 127.0.0.1:6379> SMEMBERS k3 1) "v3"
SUNION可以用來計算兩個集合的并集,如下:
127.0.0.1:6379> SUNION k1 k2 1) "v4" 2) "v1" 3) "v3"
SUNIONSTORE和SUNION命令類似,不同的是它會將結果保存到一個新的集合中,如下:
127.0.0.1:6379> SUNIONSTORE k4 k1 k2 (integer) 3 127.0.0.1:6379> SMEMBERS k4 1) "v4" 2) "v1" 3) "v3"
感謝各位的閱讀,以上就是“Redis列表與集合怎么使用”的內容了,經過本文的學習后,相信大家對Redis列表與集合怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。