一、介绍

  Redis列表(List)是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(left)或者尾部(right),一个列表最多可以包含232-1个元素(4294967295,每个列表超过40亿个元素)。

  基本命令:

  blpop key [key2 ...] timeout(移除并获取列表的第一个元素,如果列表没有元素会阻塞列表知道等待超时或者发现可弹出元素为止)

  brpop key [key2 ...] timeout(移除并获取列表最后一个元素,同上)

  brpoplpush source destination timeout (从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞列表知道等待超时或者发现可弹出元素为止)

  lindex key index (通过索引获取列表中的元素)

  linsert key before|after pivot value (在列表的元素前或后插入元素)

  llen key (获取列表长度)

  lpop key (移除并获取列表的第一个元素)

  lpush key value [value2 ...] (将一个或多个值插入到列表头部)

  lpushx key value [value2 ... ] (为已存在的列表将一个或多个值插入到列表头部)

  lrange key start stop (获取列表指定范围内的元素)

  lrem key count value   (移除列表元素)

  lset key index value (通过索引设置列表元素的值)

  ltrim key start stop  (对一个列表进行修剪,就是说让列表只保留指定区间内的元素,不在指定区间之内的元素都被删除)

  rpop key  (移除并获取列表最后一个元素)

  rpoplpush source destination  (移除列表最后一个元素,并将该元素添加到另一个列表并返回)

  rpush key value [value2 ...]  (向列表最后中添加一个或多个值)

  rpushx key value  (为已存在的列表添加值)

二、操作

  1、lpush key value [value2 ...] (向列表头部中添加一个或多个值)

  

  显示结果:

  

  每次添加的value都是在头部添加。

  2、rpush key value [value2 ...] (向列表尾部中添加一个或多个值)

  

  显示结果:

  

  每次添加的value都是在尾部添加。

  3、lrange key start stop (获取列表指定范围内的元素)

  start: 0 = 从位置0开始

  stop: -1 = 集合最后一个位置

  

  4、lpushx key value [value2 ... ] (为已存在的列表将一个或多个值插入到列表头部)

  如果集合不存在,返回0

  

  

  5、rpushx key value [value2 ... ] (为已存在的列表将一个或多个值插入到列表尾部)

  如果集合不存在,返回0

  

  6、blpop key [key2 ...] timeout(移除并获取列表的第一个元素,如果列表没有元素会阻塞列表知道等待超时或者发现可弹出元素为止)

  

  如果List里面有元素,则会返回两个元素,第一个弹出的元素是所属的key,第二个元素是被弹出元素的值;

  如果List里面没有元素,为空的话,会返回一个nil,命令后参数跟着的100是,如果List是空,100秒后返回nil。

  7、blpop key [key2 ...] timeout  (同brpop)

  

  8、lpop key  (移除并获取列表的第一个元素)

  

  9、rpop key  (移除并获取列表的最后一个元素)

  

  10、brpoplpush source destination timeout (从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞列表知道等待超时或者发现可弹出元素为止)

  被弹集合有元素情况下:

  

  被谈集合无元素情况下:

  

11、rpoplpush source destination  (移除列表最后一个元素,并将该元素添加到另一个列表并返回)

  被弹集合有元素情况下:

  

  被弹集合无元素情况下:

  

12、llen key (获取列表长度)

  

13、lindex key index (通过索引获取列表中的元素)

  

14、linsert key before|after pivot value (在列表的元素前或后插入元素)

  (before)在指定元素前插入元素:

  

  (after)在指定元素后插入元素:

  

15、lrem key count value   (移除列表元素)

  可以删除指定数量的元素

  

16、lset key index value (通过索引设置列表元素的值)

  

17、ltrim key start stop  (对一个列表进行修剪,就是说让列表只保留指定区间内的元素,不在指定区间之内的元素都被删除)

  

  

  

  

Redis学习笔记(四)——数据结构之List的更多相关文章

  1. StackExchange.Redis学习笔记(四) 事务控制和Batch批量操作

    Redis事物 Redis命令实现事务 Redis的事物包含在multi和exec(执行)或者discard(回滚)命令中 和sql事务不同的是,Redis调用Exec只是将所有的命令变成一个单元一起 ...

  2. Redis学习笔记四:独立功能之发布与订阅

    客户端可以通过执行 subscribe 命令订阅一个或多个频道,每当有其他客户端向被订阅的频道发送消息时,频道所有的订阅者都会收到这条消息. 客户端还可以通过执行 psubscribe 命令订阅一个或 ...

  3. Redis 学习笔记四 Mysql 与Redis的同步实践

    一.测试环境在Ubuntu kylin 14.04 64bit 已经安装Mysql.Redis.php.lib_mysqludf_json.so.Gearman. 点击这里查看测试数据库及表参考 本文 ...

  4. Redis学习笔记一:数据结构与对象

    1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...

  5. Redis学习笔记(1)——Redis简介

    一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value ...

  6. Redis学习笔记(二) Redis 数据类型

    Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...

  7. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  8. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  9. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

  10. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

随机推荐

  1. 报错: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

    你没打开 1.双击打开 2.点击:

  2. textarea输入框回车加大高度

    JavaScript var agt = navigator.userAgent.toLowerCase(); var is_op = (agt.indexOf("opera") ...

  3. react 中发布订阅模式使用

    react 中发布订阅模式使用 场景 怎么能将设计模式应用到我们的 React 项目中?以前一直在思考这个问题. 场景一 模块 A 模块 B 需要用到同一个数据 data,A 和 B 都会修改这份数据 ...

  4. 《我想进大厂》之MQ夺命连环11问

    继之前的mysql夺命连环之后,我发现我这个标题被好多套用的,什么夺命zookeeper,夺命多线程一大堆,这一次,开始面试题系列MQ专题,消息队列作为日常常见的使用中间件,面试也是必问的点之一,一起 ...

  5. Redis小记(二)

    1.redis数据库 redis数据库属于内存数据库,若不将数据存到磁盘中,服务器进程退出,数据也会消失 redis所有数据库都保存在redisServer结构的db数组中,db数组的每一项都是一个r ...

  6. 解决SpringBoot项目创建缓慢问题

    SpringBoot项目构建缓慢 快速创建springboot项目 在创建一个springboot项目的时候,往往速度会很慢,原因是下载springboot文件的默认地址是springboot官网(国 ...

  7. Blend学习之Loading加载动画

    介绍: Blend for visual studio 与 visual studio 是有区别的 两者虽然是IDEA 但是专注的方向是不同的,前者是专注UI后者专注业务逻辑,当然你要用blend f ...

  8. 【题解】[SHOI2007]善意的投票 / [JLOI2010]冠军调查

    Link \(\text{Solution:}\) 我们令源点和汇点分别为睡觉和不睡觉这两种互斥的决策点.把小朋友看成点,问题转化为最小割. 每一个小朋友对自己的意愿指向的汇点/源点.容量为\(1.\ ...

  9. MySql查询语句中的变量使用

    前言 今日在LeetCode刷MySql的题,遇到一题,题目到没什么,解答完了之后习惯去看此题的题解,有位大佬的思路让博主感觉很惊艳,至此,特地记录学习一下. 题目 解答 乍一看题目也没啥,分数排名, ...

  10. vue中解决chrome浏览器自动播放音频 和MP3语音打包到线上

    一.vue中解决chrome浏览器自动播放音频 需求 有新订单的时候,页面自动语音提示和弹出提示框: 问题 chrome浏览器在18年4月起,就在桌面浏览器全面禁止了音视频的自动播放功能.严格地来说, ...