Redis中list是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
注意list是可以重复的,这和后面的set(没有重复)是有区别的
1.LPUSH/RPUSH--插入
将一个或多个值插入到列表头部(若是RPUSH相反,可看下面的查询结果自己理解)
127.0.0.1:6379> LPUSH list 1 2 3 4 5 mysql
(integer) 6127.0.0.1:6379> RPUSH list1 1 2 3 4 5
(integer) 5
2.LRANGE key start stop--查询
start为0,stop为1为查询所有
127.0.0.1:6379> LRANGE list1 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> LRANGE list 0 -1
1) "mysql"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
可以注意到list(LPUSH)是先加的在后面,而list1的正好相反(RPUSH)
我们可以理解成一个输出受限的双端列表(数据结构中的)
假设只能右端输出,而左端和右端都可以输入,LPUSH就类似左端输入,先输入的在最右边,输出时最后才输出。而RPUSH就是右端输出,先输入的就可以先从右边直接输出了。
3.LPOP/BLPOP/BRPOP ---弹出元素
3.1 LPOP key
移出并获取列表的第一个元素
127.0.0.1:6379> LPOP list
"mysql"
3.2 BLPOP key
移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
127.0.0.1:6379> LPUSH list2 2
(integer) 1
127.0.0.1:6379> BRPOP list2 5
1) "list2"
2) "2"
127.0.0.1:6379> BRPOP list2 5
(nil)
(5.03s)
同理BLPOP类似
4.LLEN--长度
127.0.0.1:6379> LLEN list
(integer) 4
127.0.0.1:6379> LLEN list1
(integer) 5
5.LINDEX--根据下标找元素
不存在的下标会返回空(nil)
127.0.0.1:6379> LINDEX list 10
(nil)
127.0.0.1:6379> LINDEX list 2
"3"
6.LINSERT key BEFORE|AFTER pivot value--插在前面后面
在list列表3的后面插入mysql,before类似
127.0.0.1:6379> LRANGE list 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
127.0.0.1:6379> LINSERT list after 3 mysql
(integer) 5
127.0.0.1:6379> LRANGE list 0 -1
1) "5"
2) "4"
3) "3"
4) "mysql"
5) "2"
7.LREM key count value--移除元素
这里的count是指移除多少个,正常就1个,也可以一次移除多个
127.0.0.1:6379> LREM list 1 4
(integer) 1
127.0.0.1:6379> LRANGE list 0 -1
1) "5"
2) "3"
3) "mysql"
4) "2"
添加了几个6,一次移除3个6
127.0.0.1:6379> LRANGE list 0 -1
1) "6"
2) "6"
3) "6"
4) "6"
5) "5"
6) "3"
7) "mysql"
8) "2"
127.0.0.1:6379> LREM list 3 6
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1
1) "6"
2) "5"
3) "3"
4) "mysql"
5) "2"
8.LTRIM key start stop--截取
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
127.0.0.1:6379> LRANGE list 0 -1
1) "6"
2) "5"
3) "3"
4) "mysql"
5) "2"
127.0.0.1:6379> LTRIM list 2 4
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "3"
2) "mysql"
3) "2"
这里也可以注意到list是从1开始显示,但是真正下标是0,和数组类似
9.RPOPLPUSH source destination--从一个到另一个
将一个列表的最后一个值移到另一个的第一个
下例是将list的最后一个(2)放到list1的第一个上面
127.0.0.1:6379> LRANGE list 0 -1
1) "3"
2) "mysql"
3) "2"
127.0.0.1:6379> LRANGE list1 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> RPOPLPUSH list list1
"2"
127.0.0.1:6379> LRANGE list 0 -1
1) "3"
2) "mysql"
127.0.0.1:6379> LRANGE list1 0 -1
1) "2"
2) "1"
3) "2"
4) "3"
5) "4"
6) "5"