Redis学习-List

redis的list实际上是linked list,基于链表的一个实现。插入速度很快,但检索速度不是很快,如果对数据的访问速度要求比较高,建议使用排序集合sorted sets

相关命令

lpush向list的左边添加一个元素
rpush向list的右边添加一个元素
lrange从list中取出一定范围的元素,因为redis list是一个链表的实现,元素正向从0,1…N,反向从-1,-2…N,以此类推,0表示左边第一个元素,-1表示最后一个元素(右边第一个元素),既可以正向序号访问(lrange mylist 1,2),也可以用反向序号访问(lrange mylist -2,-1)。注意:lrange是从左边往右访问的,所以用反向序号时,要注意序号顺序(lrange mylist -2 -1)

127.0.0.1:6379> lpush mylist A
(integer) 1
127.0.0.1:6379> lpush mylist B
(integer) 2
127.0.0.1:6379> rpush mylist C
(integer) 3
127.0.0.1:6379> rpush mylist D
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "B"
2) "A"
3) "C"
4) "D"

127.0.0.1:6379> lrange mylist -2 -1
1) "C"
2) "D"

rpushx 在list右边新增一个元素,仅list存在时有效
lpushx 在list左边新增一个元素,仅list存在时有效
rpoplpush list1 list2 弹出list1最右边的一个元素,将其追加到list2的最左端,并返回给用户
brpoplpush list1 list2 timeout 弹出list1最右边的一个元素,将其追加到list2的最左端,并返回给用户;如果list1为空,那么在timeout秒之内阻塞并等待可弹出的元素
lpop 从list的左边弹出一个元素
rpop 从list的右边弹出一个元素
blpop [list …] timeout 从第一个非空列表的最左边弹出一个元素,或者在timeout秒内阻塞并等待可弹出的元素出现
brpop [list …] timeout 从第一个非空列表的最右边弹出一个元素,或者在timeout秒内阻塞并等待可弹出的元素出现
ltrim截取list,截取后list中就只包含截取范围内的值。截取也可以使用正向序号和反向序号。超过范围的下标截取并不会报错,比如,start超过list尾部,或者start大于end,结果会是list变成列表,key会被自动删除。如果end超过list尾部,会当成最后一个元素来进行截取
lset key index value设置index位置上list元素的值为value

注:blpop、brpop、 rpoplpush、brpoplpush这几个命令的特性特别适用于队列。

127.0.0.1:6379> rpushx mylist X
(integer) 5
127.0.0.1:6379> rpushx mylist1 W
(integer) 0

127.0.0.1:6379> rpush list1 1
(integer) 1
127.0.0.1:6379> rpush list1 2
(integer) 2
127.0.0.1:6379> rpush list1 3
(integer) 3
127.0.0.1:6379> rpoplpush list1 list2
"3"
127.0.0.1:6379> lrange list1 0 -1
1) "1"
2) "2"
127.0.0.1:6379> lrange list2 0 -1
1) "3"

27.0.0.1:6379> rpush list_key A
(integer) 1
127.0.0.1:6379> rpush list_key B
(integer) 2
127.0.0.1:6379> rpush list_key C
(integer) 3
127.0.0.1:6379> lrange list_key 0 -1
1) "A"
2) "B"
3) "C"
127.0.0.1:6379> ltrim list_key 0 1
OK
127.0.0.1:6379> lrange list_key 0 -1
1) "A"
2) "B"

lrem list count value 从list列表中移除前count出现的值为value的元素。count参数通过 下面几种方式来影响这个操作:
- count > 0:从头往尾移除值为value的元素
- count < 0:从尾往头移除值为value的元素
- count = 0:移除所有值为value的元素

127.0.0.1:6379> rpush list A
(integer) 1
127.0.0.1:6379> rpush list B
(integer) 2
127.0.0.1:6379> rpush list C
(integer) 3
127.0.0.1:6379> rpush list C
(integer) 4
127.0.0.1:6379> rpush list A
(integer) 5
127.0.0.1:6379> rpush list A
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "A"
2) "B"
3) "C"
4) "C"
5) "A"
6) "A"
127.0.0.1:6379> lrem list -2 C
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "A"
2) "B"
3) "A"
4) "A"
127.0.0.1:6379> lrem list 2 A
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "B"
2) "A"

llen list获取list的长度
linsert key before/after pivot value 在key中指定值pivot的前面或后面插入新值value,当key不存在时,什么事情也不做,不会报错。当key存在但保存的不是一个list时,会返回error
lindex通过索引值获取一个元素

127.0.0.1:6379> rpush list hello
(integer) 1
127.0.0.1:6379> rpush list world
(integer) 2
127.0.0.1:6379> linsert list before world 123
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "123"
3) "world"
127.0.0.1:6379> lindex list 0
"hello"
127.0.0.1:6379> lindex list -2
"123"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值