Redis——数据结构之 list

LIST(列表):list 是一个链表结构,主要功能是 push、 pop、获取一个范围的值等,操作中key可以理解成链表的名字。

redis  的  list 类型其实就是一个每一个子元素都是  String  类型的双向链表。

可以通过push、pop 操作链表的头部或尾部添加删除元素,这样 list 既可以作为栈,又可以作为队列。

添加元素

  • lpush:从左边开始添加
  • rpush:从右边开始添加
127.0.0.1:6379> lpush list1 a b c
(integer) 3
127.0.0.1:6379> lpush list1 1 2 3
(integer) 6
127.0.0.1:6379> 
127.0.0.1:6379> rpush list2 x y z
(integer) 3
127.0.0.1:6379> rpush list2 0 9 8
(integer) 6

lrange 获取指定方位的集合元素

0:第一个元素

-1:最后一个元素

127.0.0.1:6379> lrange list1 0 -1
1) "3"
2) "2"
3) "1"
4) "c"
5) "b"
6) "a"
127.0.0.1:6379> lrange list2 0 -1
1) "x"
2) "y"
3) "z"
4) "0"
5) "9"
6) "8"
127.0.0.1:6379> lrange list1 0 3
1) "3"
2) "2"
3) "1"
4) "c

 

弹出集合元素

  • lpop 左侧弹出集合元素
  • rpop 右侧弹出集合元素
127.0.0.1:6379> lpop list2 
"x"
127.0.0.1:6379> rpop list2
"8"
127.0.0.1:6379> lrange list2 0 -1
1) "y"
2) "z"
3) "0"
4) "9"

llen 查看元素个数

127.0.0.1:6379> llen list2
(integer) 4
127.0.0.1:6379> llen list1
(integer) 6

插入元素

  • lpushx 从集合头部插入(每次添加一个元素)
  • rpushx 从集合尾部插入(每次添加一个元素)
  • lpush 从集合头部插入(每次可添加多个元素)
  • rpush 从集合尾部插入(每次可添加多个元素)
127.0.0.1:6379> lrange list2 0 -1
1) "y"
2) "z"
3) "0"
4) "9"
127.0.0.1:6379> lpushx list2 Q
(integer) 5
127.0.0.1:6379> rpushx list2 5
(integer) 6
127.0.0.1:6379> 
127.0.0.1:6379> lrange list2 0 -1
1) "Q"
2) "y"
3) "z"
4) "0"
5) "9"
6) "5"
127.0.0.1:6379> lpush list2  sds sasd 
(integer) 8
127.0.0.1:6379> lrange list2 0 -1
1) "sasd"
2) "sds"
3) "Q"
4) "y"
5) "z"
6) "0"
7) "9"
8) "5"

lrem 删除指定方向的指定个数的指定元素

127.0.0.1:6379> lrange list3 0 -1
1) "1"
2) "2"
3) "3"
4) "1"
5) "2"
6) "3"
7) "1"
8) "2"
9) "3"

从左边开始删除2个1

127.0.0.1:6379> lrem list3 2 1 
(integer) 2

从右边开始删除2个3:

127.0.0.1:6379> lrem list3 -2 3
(integer) 2

删除所有2:

127.0.0.1:6379> lrem list3 0 2
(integer) 3
127.0.0.1:6379> lrange list3 0 -1
1) "3"
2) "1"

lset  设置集合指定索引的值

索引从0开始

127.0.0.1:6379> lrange list3 0 -1
1) "3"
2) "1"
127.0.0.1:6379> lset list3 0 zth
OK

linsert  在集合里插入指定元素

  • 在指定元素之前插入元素
  • 在指定元素之后插入元素
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> 
127.0.0.1:6379> linsert list1 before b zth
(integer) 4
127.0.0.1:6379> 
127.0.0.1:6379> linsert list1 after b haha
(integer) 5
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "zth"
3) "b"
4) "haha"
5) "c"

rpoplpush 把A集合尾部元素弹出并插入到B集合头部

127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "zth"
3) "b"
4) "haha"
5) "c"
127.0.0.1:6379> lrange list2 0 -1 
1) "1"
2) "2"
127.0.0.1:6379> rpoplpush list1 list2
"c"
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "zth"
3) "b"
4) "haha"
127.0.0.1:6379> lrange list2 0 -1 
1) "c"
2) "1"
3) "2"

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值