Redis数据类型之列表List
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的更多相关文章
- Redis数据类型之列表(list)
1. 什么是列表 redis的列表使用双向链表实现,往列表中放元素的时候复杂度是O(1),但是随机访问的时候速度就不行了,因为需要先遍历到指定的位置才可以取到元素. 既然列表是使用链表实现的,那么就说 ...
- 【Redis学习之五】Redis数据类型:列表和散列
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 一.列表 基于Linked Lis ...
- Redis数据类型之列表操作
redis 目录: 1.自动分配(redis) - 批量导入 2.微信自动绑定 3.django的ORM做不了的操作,怎么自定义操作数据库 extra ’ 4.报表 公司每个月销售的业绩 5.权限 = ...
- redis 数据类型之列表
1.lpush lpush(name,values) # 在name对应的list中添加元素,每个新的元素都添加到列表的最左边 # 如: # conn.lpush('oo', 11,22,33) # ...
- Redis数据类型之散列表
Redis五大数据类型以及操作 目录: 一.redis的两种链接方式 二.redis的字符串操作(string) 三.redis的列表操作(list) 四.redis的散列表操作(类似于字典里面嵌套字 ...
- 初识redis数据类型
初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...
- redis数据类型及使用场景
Redis数据类型 String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令: set,get,decr,incr,mge ...
- Redis数据类型介绍
Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...
- redis数据类型
Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...
随机推荐
- [编织消息框架][设计协议]优化long,int转换
理论部分 一个long占8byte,大多数应用业数值不超过int每次传输多4byte会很浪费 有没有什么办法可以压缩long或int呢? 答案是有的,原理好简单,如果数值不超过int.max_valu ...
- 信号处理——Hilbert端点效应浅析
作者:桂. 时间:2017-03-05 19:29:12 链接:http://www.cnblogs.com/xingshansi/p/6506405.html 声明:转载请注明出处,谢谢. 前言 ...
- Linux进程管理详解
何谓进程?进程,就是正在执行的一个程序或命令,每一个进程都是一个运行实体,有自己的地址空间,并占用一定的系统资源.简而言之,进程就是运行中的程序.在Linux中,诸如ls等命令都是进程,只不过某些命令 ...
- angularJS之ng-repeat
<p>使用 ng-repeat 来循环数组</p> <ul> <li data-ng-repeat="x in numArray&quo ...
- linux计算程序运行时间
转自: http://www.cnblogs.com/NeilHappy/archive/2012/12/08/2808417.html #include <sys/time.h> int ...
- python 接口自动化测试--代码实现(七)
数据库还原脚本: #! /usr/bin/python # coding:utf-8 import time from Engine.SqlEngine import MSSQL COUNT=1 de ...
- HTML里为什么不能在<p>标签中嵌套<div>标签
学习过HTML语言的人都应该知道,在HTML里,有分块级元素和内联元素:例如我们常用到的div,o,ul,dl,table,h1...h6等,这些都是块级元素:而像a,b,i,em,img,span等 ...
- JDK中日期和时间的几个常用类浅析(二)
java.util.Calendar JDK中的java.util.Calendar类主要是用来处理日期和时间相关的算法运算.当你需要做一些关于日期和时间的高级算数操作时,此类可能就是你的最好选择 ...
- java学习笔记 --- 异常
异常 (1)程序出现的不正常的情况. (2)异常的体系 Throwable |--Error 错误,严重问题,我们不处理. · |--Exception 异常 |--R ...
- 认识J2SE
1. J2SE的定义 J2SE:全称为Java 2 Standard Edition.Java 2平台包括:标准版(J2SE).企业版(J2EE)和微缩版(J2ME)三个版本. J2SE主要包括UI. ...