Redis初探04——Redis的list類型及操作

List是一個鏈表結構,主要功能是push,pop,獲取一個範圍的所有值等等,操作中key理解爲鏈表的名字。redis的list類型起其實就是一個每個子元素都是String類型的雙向鏈表。我們可以通過push,pop操作從鏈表的頭部或者尾部添加元素、刪除元素,這樣list既可以作爲棧,又可以作爲隊列。
操作:
指向頭的方向爲前。
1、lpush
在key對應的list的頭部添加字符串元素。lpush list名稱 value;棧的方式:先進後出

127.0.0.1:6379> lpush list1 hello
(integer) 1
127.0.0.1:6379> lpush list1 world
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "world"
2) "hello"

2、lrange list名稱 0 -1 取出棧中棧頂到棧底的元素。0棧頂/對頭下標,-1 棧底/隊列底下標

3、rpush
在key對應list的尾部添加字符串元素。rpush list名稱 value;相當於隊列:先進先出

127.0.0.1:6379> rpush list2 zhaojw
(integer) 1
127.0.0.1:6379> rpush list2 zhanr
(integer) 2
127.0.0.1:6379> lrange list2 0 -1
1) "zhaojw"
2) "zhanr"

4、linsert
在key對應的list的特定位置前或後添加元素;linsert list名稱 before/after 特定位置的value 要插入的value;

127.0.0.1:6379> rpush list3 world
(integer) 1
127.0.0.1:6379> linsert list3 before world hello
(integer) 2
127.0.0.1:6379> lrange list3 0 -1
1) "hello"
2) "world"
127.0.0.1:6379> linsert list3 after world zhaojw
(integer) 3
127.0.0.1:6379> lrange list3 0 -1
1) "hello"
2) "world"
3) "zhaojw"

5、lset
設置list中指定下標的元素值。lset list名稱 下標 要更新的值。

127.0.0.1:6379> lpush list5 hello
(integer) 1
127.0.0.1:6379> lpush list5 world
(integer) 2
127.0.0.1:6379> lpush list5 zhaojw
(integer) 3
127.0.0.1:6379> lrange list5 0 -1
1) "zhaojw"
2) "world"
3) "hello"
127.0.0.1:6379> lset list5 1 hello
OK
127.0.0.1:6379> lset list5 2 world
OK
127.0.0.1:6379> lrange list5 0 -1
1) "zhaojw"
2) "hello"
3) "world"

6、lrem
從key對應list中刪除n個和value相同的元素。(n<0從尾刪除,n=0全部刪除),返回刪除掉元素的個數。lrem list名稱 刪除元素個數n 刪除的value值。

127.0.0.1:6379> rpush list6 hello
(integer) 1
127.0.0.1:6379> rpush list6 world
(integer) 2
127.0.0.1:6379> rpush list6 hello
(integer) 3
127.0.0.1:6379> lrange list6 0 -1
1) "hello"
2) "world"
3) "hello"
127.0.0.1:6379> lrem list6 1 hello
(integer) 1
127.0.0.1:6379> lrange list6 0 -1
1) "world"
2) "hello"

7、ltrim
保留指定key的值範圍內的數據。ltrim list名稱 開始下標 結束下標

127.0.0.1:6379> rpush list7 hello
(integer) 1
127.0.0.1:6379> rpush list7 world
(integer) 2
127.0.0.1:6379> rpush list7 zhaojw
(integer) 3
127.0.0.1:6379> rpush list7 zhanr
(integer) 4
127.0.0.1:6379> lrange list7 0 -1
1) "hello"
2) "world"
3) "zhaojw"
4) "zhanr"
127.0.0.1:6379> ltrim list7 2 -1
OK
127.0.0.1:6379> lrange list7 0 -1
1) "zhaojw"
2) "zhanr"

8、lpop
從list的頭部刪除元素,並返回刪除元素。lpop list名稱 。

127.0.0.1:6379> lpush list8 hello
(integer) 1
127.0.0.1:6379> lpush list8 world
(integer) 2
127.0.0.1:6379> lpush list8 zhaojw
(integer) 3
127.0.0.1:6379> lrange list8 0 -1
1) "zhaojw"
2) "world"
3) "hello"
127.0.0.1:6379> lpop list8
"zhaojw"
127.0.0.1:6379> lrange list8 0 -1
1) "world"
2) "hello"
127.0.0.1:6379> rpush list88 hello
(integer) 1
127.0.0.1:6379> rpush list88 world
(integer) 2
127.0.0.1:6379> rpush list88 zhaojw
(integer) 3
127.0.0.1:6379> lpop list88
"hello"
127.0.0.1:6379> lrange list88 0 -1
1) "world"
2) "zhaojw"
127.0.0.1:6379> lpop list88
"world"
127.0.0.1:6379> lrange list88 0 -1
1) "zhaojw"

9、rpop
從list的尾部刪除元素,並返回刪除元素。rpop list名稱 。

127.0.0.1:6379> lpush list9 zhaojw
(integer) 1
127.0.0.1:6379> lpush list9 world
(integer) 2
127.0.0.1:6379> lpush list9 hello
(integer) 3
127.0.0.1:6379> lrange list9 0 -1
1) "hello"
2) "world"
3"zhaojw"
127.0.0.1:6379> rpop list9
"zhaojw"
127.0.0.1:6379> lrange list9 0 -1
1) "hello"
2) "world"
127.0.0.1:6379> rpop list9
"world"
127.0.0.1:6379> lrange list9 0 -1
1) "hello"

10、rpoplpush
從第一個list的尾部移除元素並添加到第二個list的頭部。rpoplpush 第一個list的名稱 第二個list的名稱

127.0.0.1:6379> lpush list10 zhaojw
(integer) 1
127.0.0.1:6379> lpush list10 world
(integer) 2
127.0.0.1:6379> lpush list10 zhaojw
(integer) 3
127.0.0.1:6379> lrange list10 0 -1
1) "zhaojw"
2) "world"
3) "zhaojw"
127.0.0.1:6379> rpush list11 hello
(integer) 1
127.0.0.1:6379> rpush list11 world
(integer) 2
127.0.0.1:6379> lrange list11 0 -1
1) "hello"
2) "world"
127.0.0.1:6379> rpoplpush list10 list11
"zhaojw"
127.0.0.1:6379> lrange list10 0 -1
1) "zhaojw"
2) "world"
127.0.0.1:6379> lrange list11 0 -1
1) "zhaojw"
2) "hello"
3) "world"  

11、lindex
返回list中的index位置的元素。lindex list名稱 index位置

127.0.0.1:6379> lpush list12 hello
(integer) 1
127.0.0.1:6379> lpush list12 world
(integer) 2
127.0.0.1:6379> lpush list12 zhaojw
(integer) 3
127.0.0.1:6379> lpush list12 hello
(integer) 4
127.0.0.1:6379> lrange list12 0 -1
1) "hello"
2) "zhaojw"
3) "world"
4) "hello"
127.0.0.1:6379> lindex list12 2
"world"
127.0.0.1:6379> lindex list12 1
"zhaojw"
127.0.0.1:6379> lindex list12 -1
"hello"
127.0.0.1:6379> rpop list12
"hello"
127.0.0.1:6379> lrange list12 0 -1
1) "hello"
2) "zhaojw"
3) "world"
127.0.0.1:6379> lindex list12 -1
"world"

12、llen
返回list的長度,即元素個數

127.0.0.1:6379> lrange list12 0 -1
1) "hello"
2) "zhaojw"
3) "world"
127.0.0.1:6379> llen list12
(integer) 3
發佈了66 篇原創文章 · 獲贊 76 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章