Redis 学习笔记(三)List操作

1.lpush key …val & rpush key …val
127.0.0.1:6379> lpush mylist v1
(integer) 1
127.0.0.1:6379> lpush mylist v2
(integer) 2
127.0.0.1:6379> lpush mylist v3
(integer) 3
127.0.0.1:6379> LRANGE mylist 0 -1		#  查看所有键中的值
1) "v3"
2) "v2"
3) "v1"
127.0.0.1:6379> rpush mylist v4
(integer) 4
127.0.0.1:6379> rpush mylist v5
(integer) 5
127.0.0.1:6379> rpush mylist v6
(integer) 6
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v3"
2) "v2"
3) "v1"
4) "v4"
5) "v5"
6) "v6"
127.0.0.1:6379> 

lpush是从左边向右边插入数据,先插入的在后,后插入的在前

在这里插入图片描述

2.lpop key [count] & rpop key [count]
127.0.0.1:6379> lpop mylist 2 
1) "v3"
2) "v2"
127.0.0.1:6379> rpop mylist 2
1) "v6"
2) "v5"
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v1"
2) "v4"
127.0.0.1:6379> lpop mylist  			# 默认移除第一个元素 [不添加count param]
"v1"
127.0.0.1:6379> rpop mylist  			# 默认移除最后一个元素 [不添加count param]
"v4"
127.0.0.1:6379> LRANGE mylist 0 -1
(empty array)
127.0.0.1:6379> 

补充:lpop:向左边弹出 rpop:向右边弹出;示意图如下:
在这里插入图片描述

3.lindex key count&Llen
127.0.0.1:6379> rpush mylist v1 v2 v3 v4 v5 v6
(integer) 6
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) "v5"
6) "v6"
127.0.0.1:6379> lindex mylist 2 			 # 获得下标为2的值
"v3"
127.0.0.1:6379> lindex mylist 7  			# 获取不存在的下标不会报错,但是是没有值的
(nil)
127.0.0.1:6379> Llen mylist  				# 获取长度
(integer) 6
127.0.0.1:6379> 

List索引从0开始,所以获取索引为2的值为v3
在这里插入图片描述

4.lrem key count val
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) "v5"
6) "v6"
127.0.0.1:6379> LREM mylist 1 v1 				# 删除键为 v1 
(integer) 1
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v2"
2) "v3"
3) "v4"
4) "v5"
5) "v6"
127.0.0.1:6379> LREM mylist 2 v2 		# 删除两个值为 v2 , 如果只有一个则只删除一个
(integer) 1
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v3"
2) "v4"
3) "v5"
4) "v6"
127.0.0.1:6379> LREM mylist 1 v1 
(integer) 0
127.0.0.1:6379> lpush mylist v2 v1 v1     # 添加两条重复值 v1 
(integer) 7
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v1"
2) "v1"
3) "v2"
4) "v3"
5) "v4"
6) "v5"
7) "v6"
127.0.0.1:6379> LREM mylist 2 v1          # 移除两条 v1
(integer) 2
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v2"
2) "v3"
3) "v4"
4) "v5"
5) "v6"
127.0.0.1:6379> 
5.ltrim key [ index endindex ]
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) "v5"
6) "v6"
127.0.0.1:6379> LTRIM mylist 0 2  		# 截取 闭区间【0 ,2】之间的元素,原链表长度发生改变
OK 
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> 

被截断的元素,是直接被舍弃了的。
在这里插入图片描述

6.rpoplpush key newkey
127.0.0.1:6379> LRANGE mylist 0 -1 
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> RPOPLPUSH mylist otherlist 			 # 移除最后一个元素至新链表中
"v3"
127.0.0.1:6379> LRANGE mylist 0 -1        # 查看原链表数据
1) "v1"  
2) "v2"
127.0.0.1:6379> LRANGE otherlist 0 -1    # 查看新链表数据 
1) "v3"
127.0.0.1:6379> 

从原来的List分割成两个不同的List,原List源数据也会被改变。
在这里插入图片描述

7.lset key index val
127.0.0.1:6379> EXISTS mylist
(integer) 0
127.0.0.1:6379> lset mylist 0 v1			 # 如果不存在,则会抛出异常
(error) ERR no such key
127.0.0.1:6379> RPUSH mylist v1 v2 v3 v4 v5 v6
(integer) 6
127.0.0.1:6379> LSET mylist 2 hello    			# 修改索引为2值为hello
OK
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v1"
2) "v2"
3) "hello"
4) "v4"
5) "v5"
6) "v6"
127.0.0.1:6379> LSET mylist 10 haha    			# 修改不存在的索引,抛出越界异常
(error) ERR index out of range
127.0.0.1:6379> 
8.linsert key before|after val newVal
127.0.0.1:6379> LRANGE mylist 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) "v5"
6) "v6"
127.0.0.1:6379> LINSERT mylist before v1 hello  		# 在 v1 前方插入值 hello
(integer) 7
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "v1"
3) "v2"
4) "v3"
5) "v4"
6) "v5"
7) "v6"
127.0.0.1:6379> LINSERT mylist after v1 world  			# 在 v1 后方插入值 world
(integer) 8
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "v1"
3) "world"
4) "v2"
5) "v3"
6) "v4"
7) "v5"
8) "v6"
127.0.0.1:6379> 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值