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系列的第四篇文章,了解前面的文章有助于更好的理解 ...
随机推荐
- Pushgateway 介绍
Pushgateway是一个独立的服务,Pushgateway位于应用程序发送指标和Prometheus服务器之间. Pushgateway接收指标,然后将其作为目标被Prometheus服务器拉取. ...
- DotNet进阶系列
一. 回顾历史 回顾个人发展历程,自2012年初次接触开发至今(2018年)已经有六个年头,这期间陆陆续续学习并掌握了不少技术,C#语言.ORM框架.多线程技术.设计模式.前端技术.MVC.MVVM框 ...
- photoshop关于图层的一些操作,几乎全部操作
千里之行始于足下,ps如果想要有上升的空间,还是扎实基础,自从看了那本phshop从入门到精通就很少学了,也错过了很多知识,其实还是有很多的不明白.期待进一步的思考和解惑. 首先来说第一个知识点: 1 ...
- 扩展欧几里得(exgcd)与同余详解
exgcd入门以及同余基础 gcd,欧几里得的智慧结晶,信息竞赛的重要算法,数论的...(编不下去了 讲exgcd之前,我们先普及一下同余的性质: 若,那么 若,,且p1,p2互质, 有了这三个式子, ...
- 第四周WordCount优化
一.GitHub地址 https://github.com/kawoyi/Advanced-WordCounter最终由组长整合的组长github 二.psp表格 三.个人模块及实现 我负责的是输入模 ...
- jqGrid整合篇
jqgrid实现多级表头 //使用setGroupHeaders参数: $( "#datagrid" ).jqGrid( 'setGroupHeaders' , { useColS ...
- PLSQL Developer导入dmp文件,一闪而过
在导入数据的时候,一闪而过,也没有任何报错信息. 在环境变量里添加ORACLE_HOME=D:\app\product\11.2.0\dbhome_1就行,此路径是指oracle安装路径.我是用这种方 ...
- 「HNOI 2019」白兔之舞
一道清真的数论题 LOJ #3058 Luogu P5293 题解 考虑$ n=1$的时候怎么做 设$ s$为转移的方案数 设答案多项式为$\sum\limits_{i=0}^L (sx)^i\bin ...
- DBA_TABLES ALL_TABLES USER_TABLES
DBA_TABLES >= ALL_TABLES >= USER_TABLES DBA_TABLES意为DBA拥有的或可以访问的所有的关系表. ALL_TABLES意为某一用户拥有的或可以 ...
- Pycharm问题:module 'pip' has no attribute 'main'
更新pip之后(pip 10 版本之后),Pycharm安装package出现报错:module 'pip' has no attribute 'main' 解决办法如下: 找到Pycharm安装目录 ...