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相等的元素。

  1. 127.0.0.1:6379> lpush names a b c
  2. (integer) 3
  3. 127.0.0.1:6379> rpush names d e
  4. (integer) 5
  5. 127.0.0.1:6379> type names
  6. list
  7. 127.0.0.1:6379> lpop names
  8. "c"
  9. 127.0.0.1:6379> rpop names
  10. "e"
  11. 127.0.0.1:6379> lpushx names f
  12. (integer) 4
  13. 127.0.0.1:6379> rpushx names g
  14. (integer) 5
  15. 127.0.0.1:6379> lpushx names2 h
  16. (integer) 0
  17. 127.0.0.1:6379> rpushx names2 i
  18. (integer) 0
  19. 127.0.0.1:6379> llen names
  20. (integer) 5
  21. 127.0.0.1:6379> lset names 2 o
  22. OK
  23. 127.0.0.1:6379> lindex names 2
  24. "o"
  25. 127.0.0.1:6379> len names
  26. (error) ERR unknown command 'len'
  27. 127.0.0.1:6379> llen names
  28. (integer) 5
  29. 127.0.0.1:6379> linsert names before h hh
  30. (integer) -1
  31. 127.0.0.1:6379> linsert names before g gg
  32. (integer) 6
  33. 127.0.0.1:6379> ltrim names 2 4
  34. OK
  35. 127.0.0.1:6379> llen names
  36. (integer) 3
  37. 127.0.0.1:6379> lpop names
  38. "o"
  39. 127.0.0.1:6379> lrem names 1 o
  40. (integer) 0
  41. 127.0.0.1:6379> lpop names
  42. "d"
  43. 127.0.0.1:6379>

BLPOP key [key ...] timeout:弹出该列表中的第一个元素,或阻塞,直到有一个可用

BRPOP key [key ...] timeout:弹出该列表中的最后一个元素,或阻塞,直到有一个可用

  1. 127.0.0.1:6379> lpush names zhangsan lisi wangwu
  2. (integer) 3
  3. 127.0.0.1:6379> BLPOP names zhangsan 1
  4. 1) "names"
  5. 2) "wangwu"
  6. 127.0.0.1:6379> BRPOP names
  7. (error) ERR wrong number of arguments for 'brpop' command
  8. 127.0.0.1:6379> BRPOP names 1
  9. 1) "names"
  10. 2) "zhangsan"
  11. 127.0.0.1:6379> BRPOP names 5
  12. 1) "names"
  13. 2) "lisi"
  14. 127.0.0.1:6379> BRPOP names 5
  15. (nil)
  16. (5.09s)
  17. #没有数据进来的时候,就超时了
  18. 127.0.0.1:6379>
  19.  
  20. 127.0.0.1:6379> BRPOP names 50
  21. #这时候处于等待状态
  22. #我们再开启一个客户端
  23. [root@localhost 18:39 ~]# redis-cli
  24. 127.0.0.1:6379> lpush names fuwh
  25. (integer) 1
  26. 127.0.0.1:6379>
  27. #这时候,这边就或在阻塞的时候,获取到
  28. 1) "names"
  29. 2) "fuwh"
  30. (20.97s)
  31. 127.0.0.1:6379>

RPOPLPUSH source destination:删除列表中的最后一个元素,将其追加到另一个列表

BRPOPLPUSH source destination timeout:弹出一个列表的值,将它推到另外一个列表,并返回它或阻塞,直到有一个可用

  1. 127.0.0.1:6379> lpush ages 18 19 20
  2. (integer) 3
  3. 127.0.0.1:6379> lpush names zhangsan lisi wangwu
  4. (integer) 3
  5. 127.0.0.1:6379> llen names
  6. (integer) 3
  7. 127.0.0.1:6379> llen ages
  8. (integer) 3
  9. 127.0.0.1:6379> RPOPLPUSH names ages
  10. "zhangsan"
  11. 127.0.0.1:6379> lpop ages
  12. "zhangsan"
  13. 127.0.0.1:6379> RPOPLPUSH names ages
  14. "lisi"
  15. 127.0.0.1:6379> lpop ages
  16. "lisi"
  17. 127.0.0.1:6379> RPOPLPUSH names ages
  18. "wangwu"
  19. 127.0.0.1:6379> lpop ages
  20. "wangwu"
  21. 127.0.0.1:6379> llen ages
  22. (integer) 3
  23. 127.0.0.1:6379> BRPOPLPUSH names ages 100
  24. #此时names中没有数据,处于阻塞状态
  25. #另外启动一个客户端,给names里面push数据
  26. 127.0.0.1:6379> lpush names zhangsan
  27. (integer) 1
  28. 127.0.0.1:6379>
  29. #----------------------------
  30. "zhangsan"
  31. (11.47s)
  32. 127.0.0.1:6379> llen ages
  33. (integer) 4
  34. 127.0.0.1:6379> lpop ages
  35. "zhangsan"
  36. 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. JavaWeb学习笔记九 过滤器、注解

    过滤器Filter filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理. 步骤: 编写一个过滤器的类实现Filter接口 实现接口中尚未实现的 ...

  2. C语言第二次博客作业—分支结构

    一.PTA实验作业 题目1:计算分段函数 1.实验代码 double x,y; scanf("%lf",&x); if(x>=0){ y=sqrt(x); print ...

  3. C语言--嵌套循环

    一.PTA实验作业 题目1 水果价格 1.本题PTA提交列表 2.设计思路 第一步:定义变量number,表示输入的编号 第二步:定义变量i,用来记录编号数目 第三步:输出菜单:[1] apple [ ...

  4. iOS开发UIKit框架-可视化编程-XIB

    1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...

  5. android 广播安装指定下载的apk

    // 广播出去,由广播接收器来处理下载完成的文件   Intent sendIntent = new Intent("com.test.downloadComplete");    ...

  6. Linux 复习

    shift + control + +  终端窗口放大 control + -   终端窗口缩小 ls -alh > laowang.txt 重定向,并覆盖源文件内容 ls -alh >& ...

  7. iOS中CocoaPods的安装及错误详解

    什么是CocoaPods CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为"Pods"的依赖库(这些类库必须是Coc ...

  8. Tomcat 8项目无法启动,无报错

    作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Tomcat 8启动很慢,且日志上无任何错误,在日志中查看到如下信息: Log4j:[2015-10-29 ...

  9. Environment.getExternalStorageDirectory()

    Environment.getExternalStorageDirectory()得到的是storage/emulated/0

  10. SpaceVim - 让你的vim变得更加高效和强大

    SpaceVim 中文手册 项 目 主 页: https://spacevim.org Github 地址 : https://github.com/SpaceVim/SpaceVim SpaceVi ...