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的更多相关文章

  1. Redis常用命令

    Redis常用命令Redis提供了丰富的命令对数据库和各种数据类型进行操作,这些命令可以再Linux终端使用.1.键值相关命令2.服务器相关命令 一.键值相关命令 1.get get 键值 当 key ...

  2. 第2讲 Redis常用命令与高级应用

    目录 一.redis数据类型 5. sorted sets类型和操作 二.Redis常用命令 1.键值相关命令 2.服务器相关命令 三. redis高级应用 1. 给redis服务器设置密码 2.持久 ...

  3. Redis常用命令手册:服务器相关命令

    Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用.在编程时,比如各类语言包,这些命令都有对应的方法.下面将Redis提供的命令做一 ...

  4. redis redis常用命令及内存分析总结(附RedisClient工具简介

    redis常用命令及内存分析总结(附RedisClient工具简介 by:授客 QQ:1033553122 redis-cli工具 查看帮助 连接redis数据库 常用命令 exists key se ...

  5. Redis常用命令与高级应用

    附: 127.0.0.1:6379> set xiaofei 小飞 OK 127.0.0.1:6379> get xiaofei "\xe5\xb0\x8f\xe9\xa3\x9 ...

  6. Redis快速起步及Redis常用命令大全

    本系列教程内容提要 Java工程师之Redis实战系列教程教程是一个学习教程,是关于Java工程师的Redis知识的实战系列教程,本系列教程均以解决特定问题为目标,使用Redis快速解决在实际生产中的 ...

  7. redis配置密码 redis常用命令

    redis配置密码 1.通过配置文件进行配置yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 [plain] view plain copy   #requi ...

  8. redis常用命令及持久化机制

    redis  常用命令 查找redis服务文件 find / -name  redis-server 查找配置文件 find / -name redis.conf 启动服务时候,要指定配置文件 启动r ...

  9. Redis 常用命令 大全

    Redis 常用命令 发现几个很好的 Redis 常用命令汇总大全网页,分享给小伙伴们~ 1.Redis 命令参考 http://redisdoc.com/string/index.html 2.W3 ...

随机推荐

  1. Mysql 一次性备份导出/导入恢复所有数据库

    有木有遇到过这种情况?电脑或者服务器需要重装系统?可是你电脑上存着n多个网站的数据库,怎么办?把数据库文件夹拷贝出来,重装系统之后再拷回去?如果你使用了InnoDB引擎,恐怕那样做会出麻烦的,一个一个 ...

  2. SSH相关知识

    SSH(Secure Shell, 安全Shell协议)是一种加密的网络传输协议,经常用于安全的远程登录. SSH只是一种协议,可以有多种实现. OPENSSH是一种应用广泛的实现. sshd是dae ...

  3. java 中的JDK封装的数据结构和算法解析(集合类)----链表 List 之 Vector (向量)

    Vector  看JDK解释(中文翻译)吧: Vector 类可以实现可增长的对象数组.与数组一样,它包含可以使用整数索引进行访问的组件.但是,Vector 的大小可以根据需要增大或缩小,以适应创建  ...

  4. Mysql的内连接,外链接,交叉链接

    内连接:只连接匹配的行  inner join select A.*,B.* from A,B where A.id = B.parent_id 外链接包括左外链接,右外链接,全外链接 左外链接:包含 ...

  5. Beta冲刺第六天

    一.昨天的困难 没有困难. 二.今天进度 1.林洋洋:更新申请ip为域名,去除druid数据源统计 2.黄腾达:协作详情中添加成员对话框优化 3.张合胜:修复侧栏菜单mini状态下不能显示问题 三.明 ...

  6. Windows下编译SDL

    Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...

  7. PostgreSQL 客户端乱码问题

    关于客户端和服务器端的乱码问题, POSTGRESQL字符集问题总结 总结的很详细, 特别棒. 这里让我头痛了很久的问题在于 终端 上字符编码的问题, 由于我的mbp上的 iterm2 的默认编码为 ...

  8. Leetcode:Two Sum

    原题:https://leetcode.com/problems/two-sum/ 尝试了两种方法: 方法一: var twoSum = function(nums, target) { for(va ...

  9. Linux进程管理:后台启动进程和任务管理命令

    一.为什么要使程序在后台执行 我们的应用有时候要运行时间很长,如:几个小时甚至几个星期,我们可以让程序在后台一直跑. 让程序在后台运行的好处有: 终端关机不影响后台进程的运行.(不会终端一关机或者网络 ...

  10. 新概念英语(1-25)Mrs. Smith's Kitchen

    What colour is the electric cooker? Mrs. Smith's Kitchen is small. There is a refrigerator in the ki ...