Redis列表與集合

2021-09-07 12:50:50 字數 5136 閱讀 6387

1.linux上安裝redis

2.redis中的五種資料型別簡介

3.redis字串(string)介紹

4.redis字串(string)中bit相關命令

列表是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

ok127.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命令類似,不同的是它會將結果儲存到乙個新的集合中,如下:

集合與列表

陣列是基本的集合,遍歷集合常用的方法是foreach和for迴圈 查詢陣列中的物件 person persons new person 3 person zs new person 張 三 person zs1 new person 張 三 response.write zs.equals zs1 ...

集合與列表

陣列是基本的集合,遍歷集合常用的方法是foreach和 for迴圈,使用foreach語句時,編譯好的中間語言 與使用 for的 相同。除非需要一些複雜的操作,如逆序迭代或每隔 一項進行迭代,否則應使用foreach迭代陣列和大多數集合,特定語言的編譯器會處理這種情況,不容易出錯,且易於 理解。重寫...

集合與列表

一 回顧 物件陣列要能夠排序,需要物件實現的介面是什麼?實現icomparable介面的compareto方法。可以使用array類的sort方法實現排序。二 system.collections命名空間 1.雜湊表 hashtable 雜湊表 表示鍵 值對的集合,這些鍵 值對根據鍵的雜湊 進行組織...