redis list類型

Redis 的 list 類型其實(shí)就是一個(gè)每個(gè)子元素都是 string 類型的雙向鏈表。主要功能是 push、pop、獲取一個(gè)范圍的所有值等。list 的 pop 操作還有阻塞版本的,是為了避免輪詢。

1 lpush

在 key 對(duì)應(yīng) list 的頭部添加字符串元素

127.0.0.1:6379> lpush list world

(integer) 1

127.0.0.1:6379> lpush list hello

(integer) 2

截取list

127.0.0.1:6379> lrange list 0 -1

1) "hello"

2) "world"

2 rpush

在 key 對(duì)應(yīng) list 的尾部添加字符串元素

127.0.0.1:6379> rpush list hello

(integer) 1

127.0.0.1:6379> rpush list world

(integer) 2

127.0.0.1:6379> lrange list 0 -1

1) "hello"

2) "world"

3 linsert

在 key 對(duì)應(yīng) list 的特定位置之前或之后添加字符串元素

127.0.0.1:6379> rpush list hello

(integer) 1

127.0.0.1:6379> rpush list world

(integer) 2

127.0.0.1:6379> linsert list before world one

(integer) 3

127.0.0.1:6379> lrange list 0 -1

1) "hello"

2) "one"

3) "world"

127.0.0.1:6379> linsert list after world two

(integer) 4

127.0.0.1:6379> lrange list 0 -1

1) "hello"

2) "one"

3) "world"

4) "two"

4 lset

設(shè)置 list 中指定下標(biāo)的元素值(下標(biāo)從 0 開始)下標(biāo)為負(fù)表示從右邊開始(下標(biāo)從-1開始)

127.0.0.1:6379> lrange list 0 -1

1) "hello"

2) "one"

3) "world"

4) "two"

127.0.0.1:6379> lset list 1 three

OK

127.0.0.1:6379> lrange list 0 -1

1) "hello"

2) "three"

3) "world"

4) "two"

5 lrem

從 key 對(duì)應(yīng) list 中刪除 count 個(gè)和 value 相同的元素。

count>0 時(shí),按從頭到尾的順序刪除:

127.0.0.1:6379> rpush list hello

(integer) 1

127.0.0.1:6379> rpush list hello

(integer) 2

127.0.0.1:6379> rpush list world

(integer) 3

127.0.0.1:6379> rpush list hello

(integer) 4

127.0.0.1:6379> rpush list hello

(integer) 5

127.0.0.1:6379> lrem list 2 hello

(integer) 2

127.0.0.1:6379> lrange list 0 -1

1) "world"

2) "hello"

3) "hello"

count<0 時(shí),按從尾到頭的順序刪除

127.0.0.1:6379> lrange list 0 -1

1) "hello"

2) "hello"

3) "world"

4) "hello"

5) "hello"

127.0.0.1:6379> lrem list -2 hello

(integer) 2

127.0.0.1:6379> lrange list 0 -1

1) "hello"

2) "hello"

3) "world"

count=0 時(shí),刪除全部

127.0.0.1:6379> lrange list 0 -1

1) "hello"

2) "hello"

3) "world"

4) "hello"

5) "hello"

127.0.0.1:6379> lrem list 0 hello

(integer) 4

127.0.0.1:6379> lrange list 0 -1

1) "world"

6 ltrim

保留指定 key 的值范圍內(nèi)的數(shù)據(jù)

127.0.0.1:6379> lrange list 0 -1

1) "0"

2) "1"

3) "2"

4) "3"

5) "4"

127.0.0.1:6379> ltrim list 1 -1

OK

127.0.0.1:6379> lrange list 0 -1

1) "1"

2) "2"

3) "3"

4) "4"

7 lpop(彈出并刪除)

從 list 的頭部刪除元素,并返回刪除元素。

127.0.0.1:6379> lrange list 0 -1

1) "1"

2) "2"

3) "3"

4) "4"

127.0.0.1:6379> lpop list

"1"

127.0.0.1:6379> lrange list 0 -1

1) "2"

2) "3"

3) "4"

8 rpop(彈出并刪除)

從 list 的尾部刪除元素,并返回刪除元素

9 rpoplpush

從第一個(gè) list 的尾部移除元素并添加到第二個(gè) list 的頭部,最后返回被移除的元素值,整個(gè)操作是原子的.如果第一個(gè) list 是空或者不存在返回 nil

127.0.0.1:6379> lrange list1 0 -1

1) "0"

2) "1"

3) "2"

4) "3"

127.0.0.1:6379> lrange list2 0 -1

1) "zero"

2) "onr"

3) "two"

4) "three"

127.0.0.1:6379> rpoplpush list1 list2

"3"

127.0.0.1:6379> lrange list1 0 -1

1) "0"

2) "1"

3) "2"

127.0.0.1:6379> lrange list2 0 -1

1) "3"

2) "zero"

3) "onr"

4) "two"

5) "three"

10 lindex

返回名稱為 key 的 list 中 index 位置元素

127.0.0.1:6379> lrange list2 0 -1

1) "3"

2) "zero"

3) "onr"

4) "two"

5) "three"

127.0.0.1:6379> lindex list2 3

"two"

11 llen

返回 key 對(duì)應(yīng) list 的長度

(integer) 5127.0.0.1:6379> lrange list2 0 -1

1) "3"

2) "zero"

3) "onr"

4) "two"

5) "three"

127.0.0.1:6379> llen list2

(integer) 5

12 blpop

它是lpop命令的阻塞版本,當(dāng)給定列表內(nèi)沒有任何元素可供彈出的時(shí)候,連接將被blpop命令阻塞,直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。當(dāng)給定多個(gè)key參數(shù)時(shí),按參數(shù)key的先后順序依次檢查各個(gè)列表,彈出第一個(gè)非空列表的頭元素。必須設(shè)置timeout超時(shí)參數(shù),當(dāng)timeout為0時(shí)表示阻塞時(shí)間無限延長。

127.0.0.1:6379> del list1 command

(integer) 1

127.0.0.1:6379> lpush command name

(integer) 1

127.0.0.1:6379> lpush request wxc

(integer) 1

127.0.0.1:6379> blpop list1 command request 0

1) "command"

2) "name"

13 brpop

類似blpop

14 brpoplpush

類似rpoplpush

15 lpushx

將值value插入到列表key的表頭,當(dāng)且僅當(dāng)key存在并且是一個(gè)列表。和lpush命令相反,當(dāng)key不存在時(shí),lpushx命令什么也不做。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容