redis对list进行的相关操作
redis对list类型进行的相关操作以及如何在python使用
redis对list类型操作的命令:
| 命令 | 语法 | 概述 | 返回值 |
| Redis Blpop 命令 | BLPOP key1 [key2 ] timeout | 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 | 如果列表为空,返回一个 nil 。 否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。 |
| Redis Brpop 命令 | BRPOP key1 [key2 ] timeout | 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 | 假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。 |
| Redis Brpoplpush 命令 | BRPOPLPUSH source destination timeout | 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 | 假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。 |
| Redis Lindex 命令 | LINDEX key index | 通过索引获取列表中的元素 | 列表中下标为指定索引值的元素。 如果指定索引值不在列表的区间范围内,返回 nil 。 |
| Redis Linsert 命令 | LINSERT key BEFORE|AFTER pivot value | 在列表的元素前或者后插入元素 | 如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到指定元素 ,返回 -1 。 如果 key 不存在或为空列表,返回 0 。 |
| Redis Llen 命令 | LLEN key | 获取列表长度 | 返回列表的长度,列表不存在返回0 |
| Redis Lpop 命令 | LPOP key | 移出并获取列表的第一个元素 | 列表的第一个元素。 当列表 key 不存在时,返回 nil 。 |
| Redis Lpush 命令 | LPUSH key value1 [value2] | 将一个或多个值插入到列表头部 | 执行 LPUSH 命令后,列表的长度。 |
| Redis Lpushx 命令 | LPUSHX key value | 将一个值插入到已存在的列表头部 | 命令执行之后,列表的长度。列表不存在时操作无效。 |
| Redis Lrange 命令 | LRANGE key start stop | 获取列表指定范围内的元素 | 一个列表,包含指定区间内的元素。 |
| Redis Lrem 命令 | LREM key count value | 移除列表元素 |
被移除元素的数量。 列表不存在时返回 0 。 |
| Redis Lset 命令 | LSET key index value | 通过索引设置列表元素的值 | 操作成功返回 ok ,当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。 |
| Redis Ltrim 命令 | LTRIM key start stop | 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 | 命令执行成功时,返回 ok |
| Redis Rpop 命令 | RPOP key | 移除列表的最后一个元素,返回值为移除的元素。 | 被移除的元素。当列表不存在时,返回 nil |
| Redis Rpoplpush 命令 | RPOPLPUSH source destination | 移除列表的最后一个元素,并将该元素添加到另一个列表开始并返回 | 被弹出的元素。如果列表无元素,返回nil |
| Redis Rpush 命令 | RPUSH key value1 [value2] | 在列表中添加一个或多个值 | 执行 RPUSH 操作后,列表的长度。当key存在但不是列表类型时,返回一个错误。 |
| Redis Rpushx 命令 | RPUSHX key value | 为已存在的列表添加值 | 执行 Rpushx 操作后,列表的长度,如果列表不存在,操作无效 |
在python中对redis list进行的相关操作:
# -*- coding: utf-8 -*-
import redis
# 连接本地redis
r = redis.Redis(host="127.0.0.1",port=6379)
1. Lpush 命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。
执行 LPUSH 命令后,列表的长度。
print(r.lpush("1",1)) # 输出的结果是1
print(r.lpush("1",1)) # 输出的结果是2
print(r.lpush("1",2,3,4)) # 输出的结果是5
print(r.set("2",1)) # 输出的结果是 True
print(r.lpush("2",2)) # 输出的结果是 redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value,原因是键 2 是字符串类型,我们用list中的lpush给他添加元素
2. Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。
如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。
执行 RPUSH 操作后,列表的长度。
print(r.rpush("2",1)) # 输出的结果是1
print(r.rpush("2",2,3)) # 输出的结果是3
print(r.rpush("2",4,5)) # 输出的结果是5
3.Blpop 命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
如果列表为空,返回一个 None 。 否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
print(r.rpush("3",1,2,3,4,5,6,)) # 输出的结果是6
print(r.blpop("3")) # 输出的结果是('3', '1')
print(r.blpop("3")) # 输出的结果是('3', '2')
print(r.blpop("3")) # 输出的结果是('3', '3')
print(r.blpop("4",timeout=2)) # 因为键 4 不存在,所以2秒后输出的结果是None
4.Brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
假如在指定时间内没有任何元素被弹出,则返回一个None 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
print(r.rpush("4",1,2,3,4,5,6,)) # 输出的结果是6
print(r.brpop("4")) # 输出的结果是('4', '6')
print(r.brpop("4")) # 输出的结果是('4', '5')
print(r.brpop("4")) # 输出的结果是('4', '4')
print(r.brpop("5",timeout=2)) # 因为键 4 不存在,所以2秒后输出的结果是None
5. Brpoplpush 命令从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
假如在指定时间内没有任何元素被弹出,则返回一个 None 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。
print(r.rpush("11",1,2,3)) # 输出的结果是3
print(r.rpush("22",4,5,6,)) # 输出的结果是3
print(r.brpoplpush(src="11",dst="22",timeout=2)) # 输出的结果是3
print(r.brpoplpush(src="44",dst="22",timeout=2)) # 键44 不存在,输出的结果是None
6. Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
列表中下标为指定索引值的元素。 如果指定索引值不在列表的区间范围内,返回 None 。
print(r.rpush("6",1,2,3)) # 输出的结果是3
print(r.lindex("6",1)) # 输出的结果是2
print(r.lindex("6",2)) # 输出的结果是3
print(r.lindex("6",3)) # 输出的结果是None
print(r.lindex("6",4)) # 输出的结果是None
print(r.lindex("6",-1)) # 输出的结果是3
7. Linsert 命令用于在列表的元素前或者后插入元素。
当指定元素不存在于列表中时,不执行任何操作。 当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。
如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到指定元素 ,返回 -1 。 如果 key 不存在或为空列表,返回 0 。
print(r.rpush("7",1)) # 输出的结果是1
print(r.rpush("7",2)) # 输出的结果是2
print(r.linsert("7","BEFORE","2",12)) # 输出的结果是2
8. Llen 命令用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。
print(r.llen("8")) # key 不存在,输出的结果是0
print(r.rpush("8",1)) # 输出的结果是1
print(r.llen("8")) # 输出的结果是1
print(r.rpush("8",2,3)) # 输出的结果是3
print(r.llen("8")) # 输出的结果是3
9. Lpop 命令用于移除并返回列表的第一个元素。
列表的第一个元素。 当列表 key 不存在时,返回 None 。
print(r.lpop("9")) # 输出的结果是None
print(r.rpush("9",1)) # 输出的结果是1
print(r.rpush("9",2)) # 输出的结果是2
print(r.lpop("9")) # 输出的结果是1
说明:被移除掉的是第一个值 1, 值2没有被移除
10.Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。
print(r.rpush("10",1)) # 输出的结果是1
print(r.rpushx("10",2)) # 输出的结果是2
print(r.rpushx("10",3)) # 输出的结果是3
print(r.rpushx("11",3)) # 输出的结果是5
print(r.lrange("10",0,-1)) # 输出的结果是['1', '2', '3']
print(r.lrange("11",0,-1)) # 输出的结果是['1', '2', '1', '2', '3']
11.Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
print(r.rpush("11",1,2)) # 输出的结果是2
print(r.rpush("11",3,4)) # 输出的结果是4
print(r.lrange("11",0,-1)) # 输出的结果是['1', '2', '3', '4']
print(r.lrange("11",1,2)) # 输出的结果是['2', '3']
12.Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
COUNT 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值。
被移除元素的数量。 列表不存在时返回 0 。
print(r.rpush("12", 1)) # 输出的结果是1
print(r.rpush("12", 1)) # 输出的结果是2
print(r.rpush("12", 2)) # 输出的结果是3
print(r.rpush("12", 1)) # 输出的结果是4
print(r.lrem("12",1,-2)) # 输出的结果是2
print(r.lrange("12",0,-1)) # 输出的结果是['1', '2']
13. Lset 通过索引来设置元素的值。
当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误
操作成功返回 True ,否则返回错误信息。
print(r.rpush("13",1,2,3,4)) # 输出的结果是4
print(r.lset("13",1,5)) # 输出的结果是True
print(r.lrange("13",0,-1)) # 输出的结果是['1', '5', '3', '4']
14. Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
print(r.rpush("14",1,2,3,4)) # 输出的结果是4
print(r.ltrim("14",1,-2)) # 输出的结果是True
print(r.lrange("14",0,-1)) # 输出的结果是['2', '3']
15. Rpop 命令用于移除并返回列表的最后一个元素。
列表的最后一个元素。 当列表不存在时,返回 None 。
print(r.rpush("15",1,2,3,4)) # 输出的结果是4
print(r.rpop("15")) # 输出的结果是4
print(r.lrange("15",0,-1)) # 输出的结果是['1', '2', '3']
16.Rpoplpush 命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
print(r.rpush("16",1,2,3,4)) # 输出的结果是4
print(r.rpush("17",1,2,3,4)) # 输出的结果是4
print(r.rpoplpush("16","17")) # 输出的结果是4
print(r.lrange("16",0,-1)) # 输出的结果是['1', '2', '3']
print(r.lrange("17",0,-1)) # 输出的结果是['4', '1', '2', '3', '4']
17.Rpushx 命令用于将一个或多个值插入到已存在的列表尾部(最右边)。如果列表不存在,操作无效。
print(r.rpushx("18",1)) # 因为键18 不存在,所以插入失败,输出的结果是0
print(r.rpush("18",2)) # 输出的结果是1
print(r.rpushx("18",3)) # 输出的结果是2
print(r.lrange("18",0,-1)) # 输出的结果是['2', '3']
redis对list进行的相关操作的更多相关文章
- redis对sorted_set进行的相关操作
redis对sorted_set(有序集合)类型操作的相关命令以及如何在python使用这些命令 redis对sorted_set(有序集合)类型操作的命令: 命令 语法 概述 返回值 Redis Z ...
- redis对hash进行的相关操作
redis对hash类型操作的相关命令以及如何在python使用这些命令 redis对hash类型操作的命令: 命令 语法 概述 返回值 Redis Hdel 命令 hdel key field [f ...
- redis对string进行的相关操作
redis对string类型操作的相关命令以及如何在python使用这些命令 redis对string类型操作的命令: 命令 语法 概述 返回值 Redis SET 命令 set key value ...
- redis对键进行的相关操作
redis对键操作的相关命令以及如何在python使用这些命令 redis对键操作的命令: 命令 语法 概述 返回值 Redis DEL 命令 del key [key ...] 该命令用于在 key ...
- redis对set(无序集合)的相关操作
redis对set类型(无序集合)操作的相关命令以及如何在python使用这些命令 redis对set类型操作的命令: 命令 语法 概述 返回值 Redis Sadd 命令 sadd key memb ...
- openresty 学习笔记三:连接redis和进行相关操作
openresty 学习笔记三:连接redis和进行相关操作 openresty 因其非阻塞的调用,令服务器拥有高性能高并发,当涉及到数据库操作时,更应该选择有高速读写速度的redis进行数据处理.避 ...
- Redis 安装,配置以及数据操作
Nosql介绍 Nosql:一类新出现的数据库(not only sql)的特点 不支持SQL语法 存储结构跟传统关系型数据库中那种关系表完全不同,nosql中存储的数据都是k-v形式 Nosql的世 ...
- redis基础之基本键值操作和使用(三)
前言 redis安装完毕后开始使用redis,先熟悉命令行操作. redis数据的类型 键:redis的所有的键都是string类型: 值:五种类型 string:字符串类型:一个string最大可以 ...
- Redis字符串(STRING)中BIT相关命令
上篇文章我们对STRING数据类型中一些基本的命令进行了介绍,但是没有涉及到BIT相关的命令,本文我们就来看看几个和BIT相关的命令. 本文是Redis系列的第四篇文章,了解前面的文章有助于更好的理解 ...
随机推荐
- Qt: usb热插拔检测(windows);
Qt提供了QAbstractNativeEventFilter来实现本地时间得过滤,通过对本地事件的检测,判断usb热插拔:(这里是windows 的例子); 首先,以QWidget, QAbstra ...
- 001 Nibiru SDK 调试工具介绍
为方便调试 Unity 项目,Nibiru 提供调试工具用于模拟手柄键值或直连主机手 柄 要求:Unity 开发环境和调试工具运行在同一台电脑上 Nibiru SDK 调试工具主要用于开发过程中对操控 ...
- EF Code First关系规则及配置
1.一对多关系 关系表: Category 分类表 Product 产品表 分类与产品之间的一对多关系 1>.产品实体类不指定外键属性 Domain中类定义: Category.cs 1 usi ...
- IPv6 RIPng (PT)
在Cisco路由器上配置RIPng 一.拓扑图 二.地址表 Device Interface IPv6 Address R1 F 0/0 2001:0DB8:CAFE:0001::1/64 S 0/ ...
- 《JAVA并发编程实战》示例程序 第三章
3.1 可见性 程序清单3-1 在没有同步的情况下共享变量(不要这么做) /** * 主线程和读线程都将访问共享变量:ready 和 number * 结果可能 * 1. 主线程先运行完,读线程后运行 ...
- FPGA
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL.GAL.CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集成电路(ASIC)领域中的 ...
- Java SE之快速失败(Fast-Fail)与快速安全(Fast-Safe)的区别[集合与多线程/增强For](彻底详解)
声明 特点:基于JDK源码进行分析. 研究费时费力,如需转载或摘要,请显著处注明出处,以尊重劳动研究成果:博客园 - https://www.cnblogs.com/johnnyzen/p/10547 ...
- Css - 选择器和样式
Css - 选择器和样式 标签选择器 即使用html标签作为选择对象 <style> div{ background:red; } </style> <div&g ...
- “放到桌面”的Servlet实现
复习下Servlet下载文件, 当response把ContentType设置成application/xxxx的时候呢,浏览器会默认启动下载,而不是试图打开. 通过给httpHeader里面加入内容 ...
- Spring Cloud 2.x-前言
Spring Cloud Spring Boot 简介 模块介绍 文章列表 简介 微服务已经成为企业开发的标配,阿里的Dubbo已经被企业大规模使用,Spring Cloud作为后起之秀,同时也是 ...