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系列的第四篇文章,了解前面的文章有助于更好的理解 ...
随机推荐
- Istio
什么是Istio Istio是Service Mesh(服务网格)的主流实现方案.该方案降低了与微服务架构相关的复杂性,并提供了负载均衡.服务发现.流量管理.断路器.监控.故障注入和智能路由等功能特性 ...
- 【转载】Nginx + Tomcat 实现反向代理
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服 ...
- Lending Club贷款数据分析
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...
- 对于Sobel算子的学习
本来想说很多目前对于 Sobel 算子的认识,但最终还是觉得对于其掌握程度太低,没有一个系统的理解,远不足以写博客,但为了12月不至于零输出,还是决定把自己学习过程中找到的相关资料进行分享. 等到一月 ...
- typescript + echarts-for-react 制作渐变柱状图, 提示[ts] 类型“Graphic”上不存在属性“LinearGradient”
更新: 2019/03 无意间发现Graphic上已有 LinearGradient属性
- 初识springboot(傻瓜式教程)
初识springboot(傻瓜式教程) 项目所需的版本 IDEA 2018 maven 3.x jdk-1.8 IDEA创建spring-boot项目(maven方法) 1.创建一个maven工程 点 ...
- Python+Selenium+Unittest+HTMLTestRunner生成测试报告+发送至邮箱,记一次完整的cnblog登录测试示例,
测试思路:单个测试集.单个测试汇成多个测试集.运行测试集.生成测试报告.发送至邮箱. 第一步:建立单个测试集,以cnblog登录为例. 测试用例: cnblog的登录测试,简单分下面几种情况:(1)用 ...
- 2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 主要依托三种恶意软件检测机制. 基于特征码的检测:一段特征码就是一段或者多 ...
- JSONP以及端口
跨域的方式有多种今天我呢,给大家带来的是JSONP接口的操作和接口 JSONP的接口到处都有 今天先拿BOOS直聘的来给大家演示一遍吧 首先找到boss官网:https://www.zhipin.co ...
- 手把手教你写vue插件并发布(二)
前记:上一篇 https://www.cnblogs.com/adouwt/p/9211003.html, 说到了一个完整的vue插件开发.发布的流程,总结下来就讲了这么一个事,如何注入vue, 如果 ...