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系列的第四篇文章,了解前面的文章有助于更好的理解 ...
随机推荐
- jquery-防多店铺购物车结算全选,单选,及删除,价格计算
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Java单例模式之最优解分析【为何说是最优解】
代码如下 /** * * @ClassName: SingletionStaticInner * @Description: TODO[单例模式之最优解] * @author shundong.wu ...
- windows下连接smb服务器
在运行里面输入:\\xxx.xxx.xxx.xxx 即可访问远程服务器
- CSS3总结一:border(边框)
Border-CSS1的属性 Border-CSS1:border Border-CSS1:border-style Border-CSS1:border-width Border-CSS1:bord ...
- python 之金玉良言 或许是最后一次给自己系统总结--已结
jar tvf xxx.jar vim xxx.jar 配置一下 notepad++ F5 cmd /k D:"Program Files (x86)"\python\python ...
- 微信退款时候报”请求被中止: 未能创建 SSL/TLS 安全通道“或”The request was aborted: Could not create SSL/TLS secure channel“的错误
如题,英文中文表述的是一个意思 退款测试在我本机测试一切都是正常的,但是发布到了服务器就报这样的一个错啦 但是无论百度或者google或者bing,你能够搜索到的结果都很类似,综合起来就是加这样一些代 ...
- 防止html页面缓存
1.增加如下头 <meta http-equiv="Expires" content="0"> <meta http-equiv=" ...
- 堆应用---构造Huffman树(C++实现)
堆: 堆是STL中priority_queue的最高效的实现方式(关于priority_queue的用法:http://www.cnblogs.com/flyoung2008/articles/213 ...
- CodeChef - COUNTREL Count Relations
题目链接 给你一个长为NNN的1,2,3,....N1,2,3,....N1,2,3,....N的序列,让你求出两种关系各个有多少可能: R1R_1R1,由于x,yx,yx,y互不是子集,且交集为空 ...
- 传输层--TCP和UDP的区别
UDP(用户数据报协议):为调用它的应用程序提供了一种不可靠.无连接的服务. TCP(传输控制协议):为调用它的应用程序提供了一种可靠的.面向连接的服务. 当设计一个网络应用程序时,该应用程序的开发人 ...