Redis常用命令--Lists
List是一个双向链表,按照插入顺序排序,可以添加一个元素到头部或者尾部。当对一个空key执行插入操作的时候会创建一个新表。
如果要清空列表,则会杀出对应的key空间。
在List中保存了头节点和未节点,以及链表包含的节点数量。所以查询链表中节点数量的复杂度为O(1)。
在List中保存的每个节点都保存了前一个节点,后一个节点,以及节点本身。
头结点的前一个节点为NULL,尾节点的后一个节点为NULL。
在Redis中提供了大概17个操作list的命令。
LPUSH key value[value ....]:从队列的左边入队一个或多个元素,时间复杂度O(1)。
RPUSH key value[value...]:从队列的右边入队一个或多个元素,时间复杂度O(1)。
LPOP key:从队列的左边出队一个元素,时间复杂度O(1)。
RPOP key:从队列的右边出队一个元素,时间复杂度O(1)。
LPUSHX key value:当队列存在时,从队列左边入队一个元素,时间复杂度O(1)。
RPUSHX key value:当队列存在时,从队列右边入队一个元素,时间复杂度O(1)。
LSET key index value:设置队列里面一个元素的值
LINDEX key index:返回下标为index的元素
LLEN key:获取队列的长度
LTRIM key start stop:剪裁列表到指定范围内的清单
LINSERT key BEFORE|AFTER pivot value:在列表中的另一个元素之前或之后插入一个元素
LREM key count value:从列表中删除元素,时间复杂度为O(N)。
count>0:从表头开始向表尾搜索,移除与value相等的元素,数量为count
count<0:从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值
count=0:移除表中所有与value相等的元素。
127.0.0.1:6379> lpush names a b c
(integer) 3
127.0.0.1:6379> rpush names d e
(integer) 5
127.0.0.1:6379> type names
list
127.0.0.1:6379> lpop names
"c"
127.0.0.1:6379> rpop names
"e"
127.0.0.1:6379> lpushx names f
(integer) 4
127.0.0.1:6379> rpushx names g
(integer) 5
127.0.0.1:6379> lpushx names2 h
(integer) 0
127.0.0.1:6379> rpushx names2 i
(integer) 0
127.0.0.1:6379> llen names
(integer) 5
127.0.0.1:6379> lset names 2 o
OK
127.0.0.1:6379> lindex names 2
"o"
127.0.0.1:6379> len names
(error) ERR unknown command 'len'
127.0.0.1:6379> llen names
(integer) 5
127.0.0.1:6379> linsert names before h hh
(integer) -1
127.0.0.1:6379> linsert names before g gg
(integer) 6
127.0.0.1:6379> ltrim names 2 4
OK
127.0.0.1:6379> llen names
(integer) 3
127.0.0.1:6379> lpop names
"o"
127.0.0.1:6379> lrem names 1 o
(integer) 0
127.0.0.1:6379> lpop names
"d"
127.0.0.1:6379>
BLPOP key [key ...] timeout:弹出该列表中的第一个元素,或阻塞,直到有一个可用
BRPOP key [key ...] timeout:弹出该列表中的最后一个元素,或阻塞,直到有一个可用
127.0.0.1:6379> lpush names zhangsan lisi wangwu
(integer) 3
127.0.0.1:6379> BLPOP names zhangsan 1
1) "names"
2) "wangwu"
127.0.0.1:6379> BRPOP names
(error) ERR wrong number of arguments for 'brpop' command
127.0.0.1:6379> BRPOP names 1
1) "names"
2) "zhangsan"
127.0.0.1:6379> BRPOP names 5
1) "names"
2) "lisi"
127.0.0.1:6379> BRPOP names 5
(nil)
(5.09s)
#没有数据进来的时候,就超时了
127.0.0.1:6379> 127.0.0.1:6379> BRPOP names 50
#这时候处于等待状态
#我们再开启一个客户端
[root@localhost 18:39 ~]# redis-cli
127.0.0.1:6379> lpush names fuwh
(integer) 1
127.0.0.1:6379>
#这时候,这边就或在阻塞的时候,获取到
1) "names"
2) "fuwh"
(20.97s)
127.0.0.1:6379>
RPOPLPUSH source destination:删除列表中的最后一个元素,将其追加到另一个列表
BRPOPLPUSH source destination timeout:弹出一个列表的值,将它推到另外一个列表,并返回它或阻塞,直到有一个可用
127.0.0.1:6379> lpush ages 18 19 20
(integer) 3
127.0.0.1:6379> lpush names zhangsan lisi wangwu
(integer) 3
127.0.0.1:6379> llen names
(integer) 3
127.0.0.1:6379> llen ages
(integer) 3
127.0.0.1:6379> RPOPLPUSH names ages
"zhangsan"
127.0.0.1:6379> lpop ages
"zhangsan"
127.0.0.1:6379> RPOPLPUSH names ages
"lisi"
127.0.0.1:6379> lpop ages
"lisi"
127.0.0.1:6379> RPOPLPUSH names ages
"wangwu"
127.0.0.1:6379> lpop ages
"wangwu"
127.0.0.1:6379> llen ages
(integer) 3
127.0.0.1:6379> BRPOPLPUSH names ages 100
#此时names中没有数据,处于阻塞状态
#另外启动一个客户端,给names里面push数据
127.0.0.1:6379> lpush names zhangsan
(integer) 1
127.0.0.1:6379>
#----------------------------
"zhangsan"
(11.47s)
127.0.0.1:6379> llen ages
(integer) 4
127.0.0.1:6379> lpop ages
"zhangsan"
127.0.0.1:6379>
Redis常用命令--Lists的更多相关文章
- Redis常用命令
Redis常用命令Redis提供了丰富的命令对数据库和各种数据类型进行操作,这些命令可以再Linux终端使用.1.键值相关命令2.服务器相关命令 一.键值相关命令 1.get get 键值 当 key ...
- 第2讲 Redis常用命令与高级应用
目录 一.redis数据类型 5. sorted sets类型和操作 二.Redis常用命令 1.键值相关命令 2.服务器相关命令 三. redis高级应用 1. 给redis服务器设置密码 2.持久 ...
- Redis常用命令手册:服务器相关命令
Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用.在编程时,比如各类语言包,这些命令都有对应的方法.下面将Redis提供的命令做一 ...
- redis redis常用命令及内存分析总结(附RedisClient工具简介
redis常用命令及内存分析总结(附RedisClient工具简介 by:授客 QQ:1033553122 redis-cli工具 查看帮助 连接redis数据库 常用命令 exists key se ...
- Redis常用命令与高级应用
附: 127.0.0.1:6379> set xiaofei 小飞 OK 127.0.0.1:6379> get xiaofei "\xe5\xb0\x8f\xe9\xa3\x9 ...
- Redis快速起步及Redis常用命令大全
本系列教程内容提要 Java工程师之Redis实战系列教程教程是一个学习教程,是关于Java工程师的Redis知识的实战系列教程,本系列教程均以解决特定问题为目标,使用Redis快速解决在实际生产中的 ...
- redis配置密码 redis常用命令
redis配置密码 1.通过配置文件进行配置yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 [plain] view plain copy #requi ...
- redis常用命令及持久化机制
redis 常用命令 查找redis服务文件 find / -name redis-server 查找配置文件 find / -name redis.conf 启动服务时候,要指定配置文件 启动r ...
- Redis 常用命令 大全
Redis 常用命令 发现几个很好的 Redis 常用命令汇总大全网页,分享给小伙伴们~ 1.Redis 命令参考 http://redisdoc.com/string/index.html 2.W3 ...
随机推荐
- Python+reuqests自动化接口测试
1.最近自己在摸索Python+reuqests自动化接口测试,要实现某个功能,首先自己得有清晰的逻辑思路!这样效率才会很快! 思路--1.通过python读取Excel中的接口用例,2.通过pyth ...
- Java虚拟机之Java内存区域
Java虚拟机运行时数据区域 ⑴背景:对于c/c++来说程序员来说,需要经常去关心内存运行情况,但对于Java程序员,只需要在必要时关心内存运行情况,这是因为在Java虚拟机自动内存管理机制的帮助下, ...
- C#委托的使用及案例
C#委托 1.委托就是把方法当做方法的参数来传递, 做自己不想做的事,是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变. 所有的委托都派生自System.Delegate类 委托的声明 ...
- JavaScript Alert 函数执行顺序问题
* { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans ...
- 【Alpha 阶段】后期测试及补充(第十一、十二周)
[Alpha 阶段]动态成果展示 修复了一些bug后,关于游戏的一些动态图展示如下: 终极版需求规格说明书和代码规范 经过一些细微的图片和格式的调整,完成了本学期的最终版本: [markdown版说明 ...
- 201621123040 《Java程序设计》第1周学习总结
1.本周学习总结 关键词 JAVA概述 HelloWorld JDK JRE JVM JAVA基础语法 相关联系 通过一周的学习,我对JAVA有了初步的了解,JAVA是一种优秀的跨平台编写代码的应用平 ...
- 完美解决某法院HP EVA8400删除VDISK问题
[故障描述] 某地法院一台HP EVA8400存储,2组扩展柜,物理磁盘由12个1T FATA磁盘(AG691A 454414-001)和10个300G 15K FC磁盘(AG690A 454411- ...
- href的理解
您搜索的项目暂未上线,可直接<a style="color: #ff0000;" onclick="onlineTalk();" href="j ...
- 常见web攻击总结
搞Web开发离不开安全这个话题,确保网站或者网页应用的安全性,是每个开发人员都应该了解的事.本篇主要简单介绍在Web领域几种常见的攻击手段及Java Web中的预防方式. XSS SQL注入 DDOS ...
- C#微信公众号——消息处理
当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL. 一.接收POST请求,处理XML信息 public void ProcessRequest(HttpC ...