前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis教程06(List类型命令介绍)

Redis教程06(List类型命令介绍)

作者头像
用户4919348
发布2019-04-02 11:32:01
4540
发布2019-04-02 11:32:01
举报
文章被收录于专栏:波波烤鸭

在上文中介绍了Hash类型的数据相关的命令,本文介绍下List列表相关的命令

列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 2E32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

命令

说明

lpush

向列表头部添加一个或多个元素

lrange

获取列表中指定的元素0第一个,-1最后一个

rpush

向列表尾部添加一个或多个元素

llen

获取列表长度

lset

通过index设置列表的值

rpop

移除列表最后一个元素,并返回

lpop

移除列表头部元素,并返回

lindex

获取列表中对应下标的值

ltrim

截取列表对应的元素

blpop

lpop的阻塞版

brpop

rpop的阻塞版

rpoplpush

移除一个列表的最后一个元素,并将该元素添加到另一个列表的头部

brpoplpush

rpoplpush的阻塞版本

LPush

LPush将所有指定的值插入到存于 key 的列表的头部。如果 key 不存在,那么在进行 push 操作前会创建一个空列表。 如果 key 对应的值不是一个 list 的话,那么会返回一个错误。

代码语言:javascript
复制
127.0.0.1:6379> lpush games lol dnf cs cf
(integer) 4
127.0.0.1:6379> lpush user2 a b c
(error) WRONGTYPE Operation against a key holding the wrong kind of value

返回结果是插入的数据的个数。

LRange

从列表中获取指定的元素。start 和 end 偏移量都是基于0的下标,即list的第一个元素下标是0(list的表头),第二个元素下标是1,以此类推。 偏移量也可以是负数,表示偏移量是从list尾部开始计数。 例如,-1 表示列表的最后一个元素,-2 是倒数第二个,以此类推。

代码语言:javascript
复制
127.0.0.1:6379> lrange games 0 -1
1) "cf"
2) "cs"
3) "dnf"
4) "lol"
127.0.0.1:6379> lrange games 0 3
1) "cf"
2) "cs"
3) "dnf"
4) "lol"
127.0.0.1:6379> lrange games 0 1
1) "cf"
2) "cs"

RPush

功能和LPush一致,只是从列表的右侧(尾部)添加。

代码语言:javascript
复制
127.0.0.1:6379> lpush games a1 a2
(integer) 6
127.0.0.1:6379> rpush games b1 b2
(integer) 8
127.0.0.1:6379> lrange games 0 -1
1) "a2"
2) "a1"
3) "cf"
4) "cs"
5) "dnf"
6) "lol"
7) "b1"
8) "b2"

llen

获取列表的长度

代码语言:javascript
复制
127.0.0.1:6379> llen games
(integer) 3

lset

通过下标设置列表的值

代码语言:javascript
复制
127.0.0.1:6379> lset games 1 aaa
OK
127.0.0.1:6379> lrange games 0 -1
1) "a1"
2) "aaa"
3) "a3"

RPop

移除列表尾部的元素并返回

代码语言:javascript
复制
127.0.0.1:6379> rpop games
"b2" # 获取到了最后一个
127.0.0.1:6379> lrange games 0 -1
1) "a2"
2) "a1"
3) "cf"
4) "cs"
5) "dnf"
6) "lol"
7) "b1" # b2被移除了

LPop

和RPop类似,只是移除的是头部的元素

代码语言:javascript
复制
127.0.0.1:6379> lpop games
"a2" # 移除了头部是a2并返回了
127.0.0.1:6379> lrange games 0 -1
1) "a1" # a2被移除了
2) "cf"
3) "cs"
4) "dnf"
5) "lol"
6) "b1"

LIndex

Lindex命令返回key中对应的index的下标的值。0表示第一个,-1表示最后一个

代码语言:javascript
复制
127.0.0.1:6379> lindex games 0
"a1"  #第一个
127.0.0.1:6379> lindex games -1
"b1" # 最后一个
127.0.0.1:6379> lindex games 3
"dnf" # 第四个

LTrim

LTrim截取列表中的部分元素。0第一个,-1最后一个

代码语言:javascript
复制
127.0.0.1:6379> lrange games 0 -1
1) "a1"
2) "cf"
3) "cs"
4) "dnf"
5) "lol"
6) "b1"
127.0.0.1:6379> ltrim games 0 3
OK
127.0.0.1:6379> lrange games 0 -1
1) "a1"
2) "cf"
3) "cs"
4) "dnf"

BLPop

BLPOP 是阻塞式列表的弹出原语。 它是命令 LPOP 的阻塞版本,这是因为当给定列表内没有任何元素可供弹出的时候, 连接将被 BLPOP 命令阻塞。 当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。同时在使用此命令的时候也需要指定过期时间,单位是秒。返回的接口是key和列表元素值

代码语言:javascript
复制
127.0.0.1:6379> blpop games 20
1) "games"
2) "cf"
127.0.0.1:6379> blpop games 20
1) "games"
2) "cs"
127.0.0.1:6379> blpop games 20
1) "games"
2) "dnf"
127.0.0.1:6379> blpop games 20
(nil) # 列表为空了,所以阻塞了20秒
(20.01s)
127.0.0.1:6379> 

BRPop

命令和BLPop类似,RPop的阻塞版,阻塞的是返回尾部不为空的元素

代码语言:javascript
复制
127.0.0.1:6379> lrange games 0 -1
1) "cs"
2) "dnf"
3) "lol"
127.0.0.1:6379> brpop games 5
1) "games"
2) "lol"
127.0.0.1:6379> brpop games 5
1) "games"
2) "dnf"
127.0.0.1:6379> brpop games 5
1) "games"
2) "cs"
127.0.0.1:6379> brpop games 5
(nil)
(5.04s)

RPopLPush

原子性地返回并移除存储在 source 的列表的最后一个元素(列表尾部元素), 并把该元素放入存储在 destination 的列表的第一个元素位置(列表头部)

代码语言:javascript
复制
127.0.0.1:6379> rpush games a1 a2 a3
(integer) 3
127.0.0.1:6379> lrange games 0 -1
1) "a1"
2) "a2"
3) "a3"
127.0.0.1:6379> rpoplpush games mygame
"a3"
127.0.0.1:6379> lrange games 0 -1
1) "a1"
2) "a2"
127.0.0.1:6379> lrange mygame 0 -1
1) "a3"
127.0.0.1:6379> rpoplpush games mygame
"a2"
127.0.0.1:6379> rpoplpush games mygame
"a1"
127.0.0.1:6379> rpoplpush games mygame
(nil)
127.0.0.1:6379> lrange games 0 -1
(empty list or set)
127.0.0.1:6379> lrange mygame 0 -1
1) "a1"
2) "a2"
3) "a3"

BRPopLPush

BRPOPLPUSH是RPOPLPUSH的阻塞版,如果没有移除的数据就会阻塞到有数据或者timeout。

代码语言:javascript
复制
127.0.0.1:6379> brpoplpush mygame games 5
"a3"
127.0.0.1:6379> brpoplpush mygame games 5
"a2"
127.0.0.1:6379> brpoplpush mygame games 5
"a1"
127.0.0.1:6379> brpoplpush mygame games 5
(nil)  #阻塞到了timeout
(5.03s)

~好了本文到此为止 更多资料欢迎参考官网手册

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年02月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LPush
  • LRange
  • RPush
  • llen
  • lset
  • RPop
  • LPop
  • LIndex
  • LTrim
  • BLPop
  • BRPop
  • RPopLPush
  • BRPopLPush
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档