Redis基础命令之List

Redis中list是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

注意list是可以重复的,这和后面的set(没有重复)是有区别的

1.LPUSH/RPUSH--插入

将一个或多个值插入到列表头部(若是RPUSH相反,可看下面的查询结果自己理解)

127.0.0.1:6379> LPUSH list 1 2 3 4 5 mysql
(integer) 6

127.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"

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值