redis--列表

redis列表是简单的字符串列表,安装插入顺序排序,您可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表可以包含超过40亿个元素。

实例:

 1 127.0.0.1:6379> flushdb
 2 OK
 3 127.0.0.1:6379> keys *
 4 (empty list or set)
 5 127.0.0.1:6379> lpush runoobkey redis
 6 (integer) 1
 7 127.0.0.1:6379> lpush runoobkey mongodb
 8 (integer) 2
 9 127.0.0.1:6379> lrange runoobkey 0 5
10 1) "mongodb"
11 2) "redis"
View Code

redis列表命令

下表列出了相关的基本命令:

redis Blpop命令移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹元素为止。

blpop命令基本语法如下:

blpop  list1  list2...  listn  timeout

返回值:如果列表为空返回一个nil,否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的key,第二个元素是被弹出元素的值。

1 127.0.0.1:6379> lrange shidong 0 2
2 1) "44"
3 2) "23"
4 127.0.0.1:6379> keys *
5 1) "zhang"
6 2) "shidong"
7 127.0.0.1:6379> blpop shidong 10#返回含有两个元素的列表,第一个是被弹出元素所属的key,第二个元素是被弹出元素的值。
8 1) "shidong"
9 2) "44"
View Code

Brpop命令:

redis  Brpop命令移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

1 127.0.0.1:6379> lrange shidong 0 2
2 1) "44"
3 2) "23"
4 127.0.0.1:6379> keys *
5 1) "zhang"
6 2) "shidong"
7 127.0.0.1:6379> brpop shidong 2 #返回两个元素,第一个是key,第二个是返回的最后一个元素
8 1) "shidong"
9 2) "23"
View Code

Brpoplpush 命令

Brpoplpush 命令从列表中弹出一个值(最后一个元素),并将弹出的元素插入到另外一个列表中并返回它,如果没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

返回值:假如在指定时间内没有任何元素弹出,则返回一个nil和等待时长,反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。

实例:

 1 127.0.0.1:6379> keys *
 2 (empty list or set)
 3 127.0.0.1:6379> lpush shidong 22
 4 (integer) 1
 5 127.0.0.1:6379> lpush shidong 30
 6 (integer) 2
 7 127.0.0.1:6379> lpush shidong 40
 8 (integer) 3
 9 127.0.0.1:6379> lrange shidong 0 2
10 1) "40"
11 2) "30"
12 3) "22"
13 127.0.0.1:6379> brpoplpush shidong sd 10#从列表弹出一个元素插入另外一个列表,并返回插入的value值
14 "22"
15 127.0.0.1:6379> lrange shidong 0 2
16 1) "40"
17 2) "30"
18 127.0.0.1:6379> brpoplpush shidong sd 10
19 "30"
20 127.0.0.1:6379> lrange shidong 0 2
21 1) "40"
22 127.0.0.1:6379> lrange sd 0 2#查看被插入的列表value值
23 1) "30"
24 2) "22"
View Code

lindex命令

该命令用于通过索引获取列表中的元素,你也可以使用负数下表,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。

基本语法如下:

lindex  key_name  index_position

返回值:列表中下标为指定索引值的元素,如果指定索引值不在列表的区间范围内,返回nil.

实例:

 1 127.0.0.1:6379> lrange mylist 0 10
 2 1) "name"
 3 2) "my"
 4 3) "!"
 5 4) "world"
 6 5) "Hello"
 7 127.0.0.1:6379> lindex mylist 0
 8 "name"
 9 127.0.0.1:6379> lrange mylist 0 10
10 1) "name"
11 2) "my"
12 3) "!"
13 4) "world"
14 5) "Hello"
15 127.0.0.1:6379> lindex mylist 2
16 "!"
17 127.0.0.1:6379> lindex mylist -1
18 "Hello"
View Code

linsert 命令

该命令用于在列表的元素前或者后插入元素,当指定元素不存在于列表中时,不执行任何操作,当列表不存在时,被视为空列表,不执行任何操作,如果key不是列表类型,返回一个错误。

linsert命令基本语法如下:

linsert  key_name  before  existing_value  new_value

返回值:如果命令执行成功,返回插入操作完成之后,列表的长度,如果没有找到指定元素,返回-1,如果key不存在或为空列表,返回0。

 1 127.0.0.1:6379> lrange mylist 0 10
 2 1) "to"
 3 2) "welcome"
 4 3) "hello"
 5 4) "world"
 6 127.0.0.1:6379> linsert mylist before "world" "home"
 7 (integer) 5
 8 127.0.0.1:6379> lrange mylist 0 10
 9 1) "to"
10 2) "welcome"
11 3) "hello"
12 4) "home"
13 5) "world"
14 127.0.0.1:6379> linsert mylist before "list" "back"
15 (integer) -1
16 127.0.0.1:6379> linsert list before "list" "back"
17 (integer) 0
View Code

llen命令

llen该命令用于返回列表的长度,如果列表key不存在,则key被解释为一个空列表,返回0,如果key不是列表类型,返回一个错误。

llen命令基本语法:llen  key_name

返回值:列表的长度。

实例:

 1 127.0.0.1:6379> keys *
 2 1) "mylist"
 3 127.0.0.1:6379> lrange mylist 0 10
 4 1) "to"
 5 2) "welcome"
 6 3) "hello"
 7 4) "home"
 8 5) "world"
 9 127.0.0.1:6379> llen mylist #返回列表mylist的长度为5
10 (integer) 5
View Code

lpop命令

redis lpop命令用于移除并返回列表的第一个元素。

基本语法如下:lpop  key_name

返回值:列表的第一个元素,当列表key不存在时,返回nil。

实例:

 1 127.0.0.1:6379> lrange mylist 0 10
 2 1) "to"
 3 2) "welcome"
 4 3) "hello"
 5 4) "home"
 6 5) "world"
 7 127.0.0.1:6379> llen mylist
 8 (integer) 5
 9 127.0.0.1:6379> lpop mylist #取出key为mylist列表的第一个值
10 "to"
11 127.0.0.1:6379> lrange mylist 0 10
12 1) "welcome"
13 2) "hello"
14 3) "home"
15 4) "world"
View Code

lpush命令

该命令将一个或多个值插入到列表头部,如果key不存在,一个空列表会被创建并执行lpush操作,当key存在但不是列表类型时,返回一个错误。

基本语法如下:lpush  key_name value1 value2 ... valuen

返回值:执行lpush命令后,列表的长度。

实例:

1 127.0.0.1:6379> lpush mylist 23
2 (integer) 5 #5为返回的列表的长度
3 127.0.0.1:6379> lrange mylist 0 -1
4 1) "23\"
5 2) "welcome"
6 3) "hello"
7 4) "home"
8 5) "world"
View Code

lpushx命令

将一个值插入到已存在的列表头部,列表不存在时操作无效。

基本语法:lpushx  key_name  value1 value2 ... valuen

返回值:lpushx命令执行之后,列表的长度。

实例:

 1 127.0.0.1:6379> lrange mylist 0 -1
 2 1) "23\"
 3 2) "welcome"
 4 3) "hello"
 5 4) "home"
 6 5) "world"
 7 127.0.0.1:6379> lpushx mylist sdsd #插入到列表头部
 8 (integer) 6
 9 127.0.0.1:6379> lrange mylist 0 -1
10 1) "sdsd"
11 2) "23\"
12 3) "welcome"
13 4) "hello"
14 5) "home"
15 6) "world"
16 127.0.0.1:6379> lpushx name sd #返回错误,0代表错误
17 (integer) 0
View Code

lrange 命令

作用:获取列表指定范围内的元素。

实例:

1 127.0.0.1:6379> lrange mylist 0 -1
2 1) "sdsd"
3 2) "23\"
4 3) "welcome"
5 4) "hello"
6 5) "home"
7 6) "world"
View Code

lrem 命令

作用:移除列表元素。

基本语法:lrem  key_name  count  value

返回值:被移除元素的数据,列表不存在时返回0.

实例:

 1 127.0.0.1:6379> keys *
 2 (empty list or set)
 3 127.0.0.1:6379> rpush mylist hello
 4 (integer) 1
 5 127.0.0.1:6379> rpush mylist hello
 6 (integer) 2
 7 127.0.0.1:6379> rpush mylist foo
 8 (integer) 3
 9 127.0.0.1:6379> rpush mylist home
10 (integer) 4
11 127.0.0.1:6379> rpush mylist hello
12 (integer) 5
13 127.0.0.1:6379> rpush mylist home
14 (integer) 6
15 127.0.0.1:6379> rpush mylist hello
16 (integer) 7
17 127.0.0.1:6379> lrange mylist 0 -1
18 1) "hello"
19 2) "hello"
20 3) "foo"
21 4) "home"
22 5) "hello"
23 6) "home"
24 7) "hello"
25 127.0.0.1:6379> lrem mylist -2 "hello"
26 (integer) 2
27 127.0.0.1:6379> lrange mylist 0 -1
28 1) "hello"
29 2) "hello"
30 3) "foo"
31 4) "home"
32 5) "home"
View Code

lset 命令

lset命令通过索引来设置元素的值。

当索引参数超出范围,或对一个空列表进行lset时,返回一个错误。

基本语法:lset  key_name  index  value

返回值:操作成功返回ok,否则返回错误信息。

实例:

 1 127.0.0.1:6379> lrange mylist 0 -1
 2 1) "hello"
 3 2) "hello"
 4 3) "foo"
 5 4) "home"
 6 5) "home"
 7 
 8 127.0.0.1:6379> lrange mylist 0 0
 9 1) "hello"
10 
11 127.0.0.1:6379> lset mylist 0 welcome
12 OK
13 127.0.0.1:6379> lrange mylist 0 0
14 1) "welcome"
15 127.0.0.1:6379> lset mylist 4 "superman"
16 OK
17 127.0.0.1:6379> lrange mylist 0 -1
18 1) "welcome"
19 2) "hello"
20 3) "foo"
21 4) "home"
22 5) "superman"
View Code

ltrim命令

ltrim对一个列表进行修复(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

下标0表示列表的第一个元素,以1表示列表的第二个元素,以此类推,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。

基本语法:ltrim  key_name  start  stop

实例:

 1 127.0.0.1:6379> lrange mylist 0 -1
 2 1) "welcome"
 3 2) "hello"
 4 3) "foo"
 5 4) "home"
 6 5) "superman"
 7 127.0.0.1:6379> ltrim mylist 1 3
 8 OK
 9 127.0.0.1:6379> lrange mylist 0 -1
10 1) "hello"
11 2) "foo"
12 3) "home"
View Code

Rpop命令

该命令用于移除并返回列表的最后一个元素。

基本语法如下:rpop  key_name

返回值:列表的最后一个元素,当列表不存在时,返回nil.

实例:

1 127.0.0.1:6379> lrange mylist 0 -1
2 1) "hello"
3 2) "foo"
4 3) "home"
5 127.0.0.1:6379> rpop mylist #删除列表最后一个元素并显示出来
6 "home"
7 127.0.0.1:6379> lrange mylist 0 -1
8 1) "hello"
9 2) "foo"
View Code

Rpoplpush 命令

作用:移除列表的最后一个元素,并将该元素添加到另一个列表并返回。

 基本语法:rpoplpush  source_key_name  destination_key_name

返回值:被弹出的元素。

实例:

 1 127.0.0.1:6379> lrange mylist 0 5
 2 1) "redis"
 3 2) "hello"
 4 3) "foo"
 5 4) "php"
 6 127.0.0.1:6379> rpoplpush mylist list
 7 "php"
 8 127.0.0.1:6379> rpoplpush mylist list
 9 "foo"
10 127.0.0.1:6379> lrange mylist 0 5
11 1) "redis"
12 2) "hello"
13 127.0.0.1:6379> lrange list 0 5
14 1) "foo"
15 2) "php"
View Code

rpush命令

该命令用于将一个或多个值插入到列表的尾部(最右边)

如果列表不存在,一个空列表会被创建并执行rpush操作,当列表存在但不是列表类型时,返回一个错误。

基本语法:rpush  key_name  value1 value2 。。。valueN

返回值:执行rpush操作后,列表的长度。

实例:

 1 127.0.0.1:6379> lrange mylist 0 5
 2 1) "redis"
 3 2) "hello"
 4 127.0.0.1:6379> rpush mylist hehe haha linux centos
 5 (integer) 6
 6 127.0.0.1:6379> lrange mylist 0 -1
 7 1) "redis"
 8 2) "hello"
 9 3) "hehe"
10 4) "haha"
11 5) "linux"
12 6) "centos"
View Code

rpushx命令

该命令用于讲一个值插入到已存在的列表尾部(最后边),如果列表不存在,操作无效。

基本语法: rpushx  key_name   value1  value2 ...valueN

返回值:执行rpushx操作后,列表的长度。

实例:

 1 127.0.0.1:6379> rpush mylist hello
 2 (integer) 1
 3 127.0.0.1:6379> rpush mylist foo
 4 (integer) 2
 5 127.0.0.1:6379> rpushx mylist bar#插入到已存在列表的尾部
 6 (integer) 3
 7 127.0.0.1:6379> lrange mylist 0 -1
 8 1) "hello"
 9 2) "foo"
10 3) "bar"
11 127.0.0.1:6379> rpushx mylist2 far #列表不存在,返回值为0,代表操作无效
12 (integer) 0
13 127.0.0.1:6379> lrange mylist 0 -1
14 1) "hello"
15 2) "foo"
16 3) "bar"
View Code
原文地址:https://www.cnblogs.com/sd880413/p/8243601.html