Redis教程06(List类型命令介绍)-阿里云开发者社区

开发者社区> 游客a74jvhcp7vclg> 正文

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

简介: 在上文中介绍了Hash类型的数据相关的命令,本文介绍下List列表相关的命令 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
+关注继续查看

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

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

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

截屏2021-12-01 上午10.19.41.pngLPush


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

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 是倒数第二个,以此类推。

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一致,只是从列表的右侧(尾部)添加。

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


获取列表的长度

127.0.0.1:6379> llen games
(integer) 3


lset


通过下标设置列表的值

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


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

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类似,只是移除的是头部的元素

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表示最后一个

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最后一个

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和列表元素值

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的阻塞版,阻塞的是返回尾部不为空的元素

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 的列表的第一个元素位置(列表头部)

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。

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)


~好了本文到此为止


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ActiveReports 报表应用教程 (5)---解密电子商务领域首张电子发票的诞生(套打报表)
原文:ActiveReports 报表应用教程 (5)---解密电子商务领域首张电子发票的诞生(套打报表) 6月27日京东商城发布了中国电子商务领域首张电子发票,同时宣布相关系统正式上线,这标志着中国电子商务的步伐又向前迈出了重要的一步。
909 0
[喵咪Redis]Redis安装与介绍
哈喽大家好啊,这次要来和大家一起来了解学习Redis的一系列技术,最终目的是搭建一个高可用redis集群自动负载灾备,那我们先从最基础的Redis的一些基本介绍以及安装来说起!
3152 0
Redis中5种数据结构的使用场景介绍
这篇文章主要介绍了Redis中5种数据结构的使用场景介绍,本文对Redis中的5种数据类型String、Hash、List、Set、Sorted Set做了讲解,需要的朋友可以参考下 一、redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉
2223 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
12260 0
有效的XML: DTD(文档类型定义)介绍(转)
文档类型定义和命名空间   有效(Valid)的XML文档:   首先,XML文档是个格式正规的(Well-formed)XML文档;(见格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节)。
771 0
Spring Boot 2.x基础教程:使用Redis的发布订阅功能
Spring Boot 2.x基础教程:使用Redis的发布订阅功能
11 0
阿里云Redis集群版简要介绍
产品简介 云数据库 Redis 提供集群版实例,轻松突破 Redis 自身单线程瓶颈,可极大满足对于 Redis 大容量或高性能的业务需求。 云数据库 Redis 集群版内置数据分片及读取算法,整体过程对用户透明,免去用户开发及运维 Redis 集群的烦恼。
9260 0
+关注
游客a74jvhcp7vclg
10余年开发架构经验,同时乐于技术分享!
332
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载