Redis列表简介

Redis列表是简单的字符串列表,一个列表最多可以包含 232 - 1 个元素。列表按照插入顺序排序,可以从列表的头部或者尾部添加元素

上图演示了使用LPUSH向列表中插入元素,并用LRANGE取出列表元素。LPUSH key value : 将元素从列表的头部插入

Redis列表命令

 一、BLPOP key1 [key2] timeout

作用: 移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

返回值:在列表不为空时,返回两个元素,第一个是被弹出元素所属的key,第二个是被弹出的元素;列表为空时,在等待给定的timeout过后,会返回nil

二、BRPOP key1 [key2] timeout

作用:与BLPOP指令相反,移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

返回值:假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值

三、BRPOPLPUSH source destination timeout

作用:从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

当被弹出元素的列表不为空时,BRPOPLPUSH会将列表的右边的第一个元素弹出,并插入到一个指定的列表中

当列表为空时,超过指定时间,返回nil和等待时间

四、LINDEX key index

作用:通过索引获取列表中的元素。列表索引从0开始,也可以用负数表示,-1表示列表的最后一个元素

使用LPUSH向列表中插入2个元素,由于是从左边顺序插入,所以最后插入的就是左边第一个元素

LINDEX myList 0 : 获取myList的第一个元素,即"Hello"

LINDEX myList -1 : 从右边开始获取第一个元素,即"World"

LINDEX myList 3 : 超出索引范围,返回nil

五、LINSERT key BEFORE|AFTER pivot value

作用:在列表的元素前或者后插入元素。当指定元素不存在列表中,不执行任何操作;当列表不存在时,不执行任何操作;若key不是列表类型,返回错误

以上演示了向列表myList的元素"Hello"与"World"之间插入一个"PHP"

当想要在myList列表中不存在的元素"Python"后插入"JAVA",命令执行失败,返回-1

当列表不存在或为空时,进行LINSERT操作,命令执行失败,返回0

返回值:命令执行成功,返回插入元素之后的列表的长度;没找互指定元素,返回-1;key不存在或为空列表,返回0

六、LLEN key

作用:获取列表的长度。

返回值:如果key不存在,则会被当成一个空列表,返回0;如果key不是列表类型,返回错误

七、LPOP key

作用:移出并获取列表的第一个元素

返回值:执行成功,返回列表的第一个元素,key不存在时,返回nil

八、LPUSH key value1......valuen

作用:将一个或多个值插入到列表头部

返回值:LPUSH命令执行成功后,返回此时列表的长度;如果key不存在,一个空列表将会被创建并执行LPUSH操作;如果key存在,但不是列表类型,返回错误

九、LPUSHX key value

作用:将一个或多个值插入到已存在的列表头部,列表不存在时操作无效

操作执行成功时,返回此时列表的长度

当操作一个不存在的列表时,操作无效,返回0

十、LRANGE key start stop

作用:获取列表指定范围内的元素

start:从0开始,0表示左边第一个元素,以此类推

stop:若为正数,则含义与start相同;若为负数,则表示从右边数起,如-1表示右边起第一个元素,-2表示右边起第二个元素,以此类推

LRANGE list3 0 -1:表示从左边第一个元素开始取到右边第一个元素,也就是取出整个列表的元素

LRANGE list3 0 1:从左边第一个元素取到第二个元素

LRANGE list3 0 0:从第一个元素取到第一个元素,即第一个元素本身

注意:[start, stop]是闭区间

十一、LREM key count value

作用:移出列表元素

当count=0时;移出key中所有与value相等的值,返回移出元素的数量

当count>0时;从列表左边开始,移出数量为count的与value相等的值

当count<0时;从右边开始,移出数量为count的绝对值的与value相等的值

当列表不存在时,返回0

十二、LSET key index value

作用:通过索引设置列表元素的值

使用LSET操作,索引上的新值将会替换旧值

当LSET操作超出索引范围时,将报索引参数超出范围错误;操作一个不存在的列表时,报"no such key"错误

十三、LTRIM key start stop

作用:删除列表中不在指定区间内的元素

LTRIM将列表中不在区间[start, stop]中的元素删除,操作成功返回ok

十四、RPOP key

作用:移出并获取列表的最后一个元素

RPOP删除列表的最后一个元素,操作成功返回被删除的元素;当操作一个不存在的列表时,返回nil

十五、RPOPLPUSH source destination

作用:移出列表的最后一个元素,并将该元素插入到另一个列表中

操作成功,返回被移出的元素

十六、RPUSH key value1......valuen

作用:从列表的右边插入一个或多个元素

十七、RPUSHX key value

作用:从右边向一个已存在的列表插入元素

操作成功返回此时列表的长度;操作一个不存在的列表时,返回0

Redis数据类型之列表List的更多相关文章

  1. Redis数据类型之列表(list)

    1. 什么是列表 redis的列表使用双向链表实现,往列表中放元素的时候复杂度是O(1),但是随机访问的时候速度就不行了,因为需要先遍历到指定的位置才可以取到元素. 既然列表是使用链表实现的,那么就说 ...

  2. 【Redis学习之五】Redis数据类型:列表和散列

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 一.列表 基于Linked Lis ...

  3. Redis数据类型之列表操作

    redis 目录: 1.自动分配(redis) - 批量导入 2.微信自动绑定 3.django的ORM做不了的操作,怎么自定义操作数据库 extra ’ 4.报表 公司每个月销售的业绩 5.权限 = ...

  4. redis 数据类型之列表

    1.lpush lpush(name,values) # 在name对应的list中添加元素,每个新的元素都添加到列表的最左边 # 如: # conn.lpush('oo', 11,22,33) # ...

  5. Redis数据类型之散列表

    Redis五大数据类型以及操作 目录: 一.redis的两种链接方式 二.redis的字符串操作(string) 三.redis的列表操作(list) 四.redis的散列表操作(类似于字典里面嵌套字 ...

  6. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  7. redis数据类型及使用场景

    Redis数据类型  String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令:  set,get,decr,incr,mge ...

  8. Redis数据类型介绍

    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...

  9. redis数据类型

    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...

随机推荐

  1. 程序员的自我修养:高效使用Google解决问题

    如果票选近二十年最伟大的发明,我相信搜索引擎肯定会占据一个不容小觑的位置,它不单是一项发明,更是一项成就,最大程度消灭了信息的不平等.既然人人都可以接触到海量的信息,那么衡量信息财富多寡就只剩下技巧这 ...

  2. C#异步的世界【下】

    接上篇:<C#异步的世界[上]> 上篇主要分析了async\await之前的一些异步模式,今天说异步的主要是指C#5的async\await异步.在此为了方便的表述,我们称async\aw ...

  3. Android SDK教程

    Android SDK 网络问题解析 Android 客户端网络不稳定,会导致App 有时候无法及时收到 Push 消息. 很多开发者认为这是因为 JPush 推送不稳定.延迟,甚至有时候认为 JPu ...

  4. 怎么用php语言来做文件缓存

    使用缓存能够让我们的程序访问起来更加快速,缓存可以减少对数据库的操作,体验起来更好一些,对服务器的压力也小一些,当然服务速度很快 php文件执行完之后产生的解析完的数据,保存成静态的网页,下次打开的这 ...

  5. Django之Model世界

    Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数 ...

  6. 用Use Case获取需求的方法是否有什么缺陷,还有什么地方需要改进?

    一.用例解释 用例是一种在开发新系统或者软件改造时捕获潜在需求的技术.每个用例提供了一个或多个场景,该场景揭示了系统是如何同最终用户或其它系统交互的,从而获得一个明确的业务目标.用例要避免技术术语,取 ...

  7. _1_html_

    创:18_3_2017修:20_3_2017什么是html? 超文本标记语言 告诉浏览器内容的语义,html中包含了各种标签html页面的框架是什么? <!DOCTYPE html> #D ...

  8. 转载 感受K2.Net 2003工作流解决方案

    接触SourceCode公司的工作流产品K2.NET 2003有一段时间了,想把一些心得分享出来,和各位共同探讨一下,抛砖引玉,希望能对相关人士以启发. K2.Net 2003是基于微软.Net Fr ...

  9. [ZooKeeper.net] 3 ZooKeeper的分布式锁

    基于ZooKeeper的分布式锁 ZooKeeper 里实现分布式锁的基本逻辑: 1.zookeeper中创建一个根节点(Locks),用于后续各个客户端的锁操作. 2.想要获取锁的client都在L ...

  10. geoR文档翻译

    说来惭愧,很久没有更新自己的博客了.期间个人生活经历了很多变故,心理上的打击尤甚.加之没有取得好的科研成果,痛定思痛,还是下苦功夫多多学习. 最近对比验证各种方法的插值精度,用到了R语言地统计学包,由 ...