文档章节

Redis List

learn_more
 learn_more
发布于 2016/09/30 12:52
字数 1122
阅读 28
收藏 0

List

列表,左边为表头,右边为表尾,元素可重复插入,同时保存元素添加的顺序,可以双向操作,操作支持原子性,同时要阻塞功能,注意没有 contains 功能,就算有也是通过遍历判断则效率差。

 

1、Bxxx 阻塞(blocking)操作

>blpop key [key ...] timeout

阻塞式获取指定key的表头元素同时删除该元素,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止。当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。timeout 为0 表示永不超时,单位秒。

 

>brpop key [key ...] timeout

和 blpop 功能类似,区别在于从表尾操作。

 

>brpoplpush source destination timeout

和 rpoplpush 功能类似,区别在于该操作是阻塞式操作,如果队列没有元素则会等待阻塞。

 

2、Lxxx 从队列左边(表头操作)

>lindex key index

返回列表 key 中,下标为 index 的元素。下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

 

>linsert key BEFORE|AFTER pivot value

将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。当 pivot 不存在于列表 key 时,不执行任何操作。当 key 不存在时, key 被视为空列表,不执行任何操作。注意表头是最左边也就是前面。

 

>llen key

返回列表 key 的长度,空列表返回0;

 

>lpop key

移除并返回列表 key 的头元素,原子操作,key不存在时返回null。

 

>lpush key value [value ...]

将一个或多个值 value 插入到列表 key 的表头(左边是表头)。如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头。相当于从左到右依次执行 lpush key value,所以最后的value是在列表的最左边(表头)。

 

>lpushx key value

将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。和 LPUSH 命令相反,当 key 不存在时, LPUSHX (eXist)命令什么也不做。

 

>lrange key start end

返回列表 key 中指定区间内的元素,区间以偏移量 start 和 end 指定,start从0开始,start和end都包含在内。

 

>lrem key count value

根据参数 count 的值,移除列表中与参数 value 相等的元素。

count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。

count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。

count = 0 : 移除表中所有与 value 相等的值。

 

>lset key index value

将列表 key 下标为 index 的元素的值设置为 value. index 不能超过现有列表长度的最大值。

 

>ltrim key start end

对列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除,同样这里的区间是包括start和end的。

 

 

3、Rxxx 从队列右边(表尾操作)

>rpop key

与lpop 顺序相反,从队列的右边(表尾)删除元素并返回被删除的元素,如果队列为空,则返回null.

 

>rpoplpush source destination

原子性操作,将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。同时将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。

 

>rpush key value [value ...]

将一个或多个值 value 插入到列表 key 的表尾(左边是表头)。如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾。相当于从左到右依次执行 rpush key value.所以最后的value是在列表的最右端(表尾)。

 

>rpushx key value

将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。和 rpush 命令相反,当 key 不存在时, rpushx (eXist)命令什么也不做。

 

 

 

 

© 著作权归作者所有

上一篇: Redis info
下一篇: Redis Hash
learn_more
粉丝 93
博文 240
码字总数 210196
作品 0
深圳
程序员
私信 提问
Linux CentOS 6.x 开发配置文档 8 - Redis

REmote DIctionary Server,可以直接理解为远程字典服务,也就是基于Key-Value模式Memcached+Database Persistence。 Redis 是一个开源的key-value内存数据库。支持的数据类型有:String,l...

-蒋全忠-
2015/05/15
0
0
Swoole实现Websocket每秒钟主动推送

需求: 需要每秒钟向前台推送一次行情数据。 向某个用户推送消息 及时响应前端发出的请求 握手时效验令牌 每个ip 不超过十个连接 因为网上没有很具体的相关文档,只能摸着石头过河,现功能已...

iuiuiuiu
03/06
0
0
Redis之如何安装Redis

1.下载Redis版本 下载链接在这里,http://download.redis.io/releases/ 2.解压 执行如下命令,如下List-1 List-1 3.进入redis目录,执行命令 List-2 4.执行install命令 编译安装,如下 List...

克虏伯
2018/09/02
0
0
ITOO---“秒杀”选课之Redis序列化

1.我的选课 在进行选课活动中了为了尽量减少客户端和数据库的连接次数,在实现的思路是这样设计的:客户端的请求优先访问Redis缓存空间,如果Redis中没有则从数据库中加载,并添加到Redis中。...

mengdonghui123456
2017/08/06
0
0
python操作redis

非关系型数据库和关系型数据库的差别: 非关系型数据库的优势: 1. 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。 2. 可扩展...

粗粮面包
2017/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

远程拷贝命令scp

命令scp 用途: secure copy,利用ssl安全复制(远程文件复制程序) 语法: ]# scp [选项] [用户名@ip]源文件 [用户@ip]目标文件 选项: -P port 指定远程主机的ssh端口 ...

迷失De挣扎
今天
4
0
HTTP

作者:蛙课网 链接:https://zhuanlan.zhihu.com/p/70949908 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 HTTP协议简介 HTTP(超文本传输协议)是应用...

元歌
今天
2
0
总结使用tslint的一些代码规范

1.冒号后面,逗号后面要有空格,还有一般if语句大括号前面后面也都要有空格 2.使用for (let i = 0; i < arr.length; i++) {}循环数组报错,使用for (const i of arr) {} for (const i of arr...

大换子
今天
2
0
虚函数

虚函数作用: 基类中可以调用继承类中的函数。(相当于就是允许子类覆盖父类中的函数)

colin_86
今天
2
0
DisplayPort 迎来重大更新,数据带宽性能提高3倍

VESA宣布了他们对DisplayPort接口三年来的第一次重大更新。 与DP 1.4a相比,DisplayPort 2.0提供了三倍于DP 1.4a的数据带宽性能,支持超过8K的分辨率,更高的刷新率和更高分辨率的HDR,以及其...

linux-tao
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部