redis对sorted_set(有序集合)类型操作的相关命令以及如何在python使用这些命令

redis对sorted_set(有序集合)类型操作的命令:

命令 语法 概述 返回值

Redis Zadd 命令

ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN 向有序集合添加一个或多个成员,或者更新已存在成员的分数 被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。当 key 存在但不是有序集类型时,返回一个错误。

Redis Zcard 命令

ZCARD KEY_NAME 获取有序集合的成员数 当 key 存在且是有序集类型时,返回有序集的基数。 当 key 不存在时,返回 0 。

Redis Zcount 命令

ZCOUNT key min max 计算在有序集合中指定区间分数的成员数 分数值在 min 和 max 之间的成员的数量

Redis Zincrby 命令

ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment member 成员的新分数值,以字符串形式表示。

Redis Zinterstore 命令

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中 key 的数量以 numkeys 参数指定 保存到目标结果集的的成员数量。

Redis Zlexcount 命令

ZLEXCOUNT KEY MIN MAX  在有序集合中计算指定字典区间内成员数量(ZLEXCOUNT myzset - +) 指定区间内的成员数量。

Redis Zrange 命令

ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合成指定区间内的成员 指定区间内,带有分数值(可选)的有序集成员的列表。

Redis Zrangebylex 命令

ZRANGEBYLEX key min max [LIMIT offset count] 通过字典区间返回有序集合的成员 指定区间内的元素列表

Redis Zrangebyscore 命令

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 通过分数返回有序集合指定区间内的成员 指定区间内,带有分数值(可选)的有序集成员的列表。

Redis Zrank 命令

ZRANK key member 返回有序集合中指定成员的索引 如果成员是有序集 key 的成员,返回 member 的排名。 如果成员不是有序集 key 的成员,返回 nil 。

Redis Zrem 命令

ZREM key member [member ...] 移除有序集合中的一个或多个成员 被成功移除的成员的数量,不包括被忽略的成员。

Redis Zremrangebylex 命令

ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员

被成功移除的成员的数量,不包括被忽略的成员。

Redis Zremrangebyrank 命令

ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员 被移除成员的数量。

Redis Zremrangebyscore 命令

ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员 被移除成员的数量。

Redis Zrevrange 命令

ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到底 指定区间内,带有分数值(可选)的有序集成员的列表。

Redis Zrevrangebyscore 命令

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 返回有序集中指定分数区间内的成员,分数从高到低排序 指定区间内,带有分数值(可选)的有序集成员的列表。

Redis Zrevrank 命令

ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 如果成员是有序集 key 的成员,返回成员的排名。 如果成员不是有序集 key 的成员,返回 nil 。

Redis Zscore 命令

ZSCORE key member 返回有序集中,成员的分数值 成员的分数值,以字符串形式表示。

Redis Zunionstore 命令

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 计算给定的一个或多个有序集的并集,并存储在新的 key 中 保存到 destination 的结果集的成员数量。

Redis Zscan 命令

ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值) 返回的每个元素都是一个有序集合元素,一个有序集合元素由一个成员(member)和一个分值(score)组成。

                                                                             redis sorted_set类型操作文档

在python中对redis sorted_set进行的相关操作

# -*- coding: utf-8 -*-
import redis
# 连接本地redis
r = redis.Redis(host="127.0.0.1",port=6379)
1.Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。
如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。
分数值可以是整数值或双精度浮点数。
如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
当 key 存在但不是有序集类型时,返回一个错误。
print(r.zadd("1","1",2,"3",3)) # 输出的结果是2
print(r.zadd("1","2",2))     # 输出的结果是1
print(r.zadd("1","1",1))     # 输出的结果是0
print(r.zadd("1","3",4))     # 输出的结果是0
print(r.zrange("1",0,-1))    # 输出的结果是 ['1', '2', '3']
2.Zcard 命令用于计算集合中元素的数量。
当 key 存在且是有序集类型时,返回有序集的基数。 当 key 不存在时,返回 0 。
print(r.zadd("1","1",1,"3",3)) # 输出的结果是2
print(r.zadd("1","2",2)) # 输出的结果是1
print(r.zadd("1","2",4)) # 输出的结果是1
print(r.zcard(1)) # 输出的结果是3
print(r.zcard(2)) # 输出的结果是0
3.Zcount 命令用于计算有序集合中指定分数区间的成员数量。分数值在 min 和 max 之间的成员的数量。
print(r.zadd("2","1",1,"3",3))     # 输出的结果是2
print(r.zadd("2","2",2))      # 输出的结果是1
print(r.zadd("2","1",4))      # 输出的结果是0
print(r.zcount("2",min=0,max=5)) # 输出的结果是3
print(r.zcount("2",min=0,max=3)) # 输出的结果是2
print(r.zcount("2",min=1,max=3)) # 输出的结果是2
4.Zincrby 命令对有序集合中指定成员的分数加上增量 increment
可以通过传递一个负数值 increment ,让分数减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。
当 key 不存在,或分数不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。
当 key 不是有序集类型时,返回一个错误。
分数值可以是整数值或双精度浮点数。
member 成员的新分数值,以字符串形式表示。
print(r.zadd("4","1",1,"2",2,"3",3,"4",4))   # 输出的结果是4
print(r.zincrby(name=4,value=1,amount=5)) # 输出的结果是6.0
print(r.zincrby(name=4,value=2,amount=55)) # 输出的结果是57.0
print(r.zrange(name=4,start=0,end=-1,withscores=False)) # 输出的结果是['1', '3', '2', '4']

5.Zinterstore 命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和。

print(r.zadd("41", "a1", 6, "a2", 2,"a3",5)) # 输出的结果是3
print(r.zadd('42', a1=7,b1=10, b2=5))            # 输出的结果是3
# 获取两个有序集合的交集并放入dest集合,如果遇到相同值不同分数,则按照aggregate进行操作
# aggregate的值为: SUM MIN MAX
print(r.zinterstore("43",("42","41"),aggregate="MAX"))  # 输出的结果是4
print(r.zscan("43")) # 输出的结果是(0L, [('a1', 7.0)])

6. Zlexcount 命令在计算有序集合中指定字典区间内成员数量。
print(r.zadd("6", "a", 1, "b", 2,"c",3))     # 输出的结果是3
print(r.zlexcount(name=6,min="-",max="+")) # 输出的结果是3
print(r.zadd("6", "e", 4, "f", 5,"d",6)) # 输出的结果是3
print(r.zlexcount(name=6,min="-",max="+")) # 输出的结果是6
print(r.zlexcount(name=6,min="[a",max="[b")) # 输出的结果是2
print(r.zlexcount(name=6,min="[a",max="[f")) # 输出的结果是6
print(r.zlexcount(name=6,min="[a",max="[e")) # 输出的结果是4
7.Zrange 返回有序集中,指定区间内的成员。
其中成员的位置按分数值递增(从小到大)来排序。
具有相同分数值的成员按字典序(lexicographical order )来排列。
如果你需要成员按值递减(从大到小)来排列,请使用 ZREVRANGE 命令。
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
print(r.zadd("7", "1", 1, "2", 2,"3",3,"4",4,"5",5))     # 输出的结果是5
print(r.zrange("7",start=0,end=-1,desc=False)) # 输出的结果是['1', '2', '3', '4', '5']
print(r.zrange("7",start=0,end=2,desc=False)) # 输出的结果是['1', '2', '3']

8. Zrangebylex 通过字典区间返回有序集合的成员。
当有序集合的所有成员都具有相同的分值时,有序集合的元素会根据成员的 值 (lexicographical ordering)来进行排序,而这个命令则可以返回给定的有序集合键 key 中, 元素的值介于 min 和 max 之间的成员
对集合中的每个成员进行逐个字节的对比(byte-by-byte compare), 并按照从低到高的顺序, 返回排序后的集合成员。 如果两个字符串有一部分内容是相同的话, 那么命令会认为较长的字符串比较短的字符串要大

print(r.zadd("8", "a", 1, "b", 2,"c",3))     # 输出的结果是3
print(r.zrangebylex(name="8",min="-",max="[c")) # 输出的结果是 ['a', 'b', 'c']
print(r.zrangebylex(name="8",min="-",max="(c")) # 输出的结果是 ['a', 'b']
print(r.zadd("8", "e", 4, "f", 5,"d",6)) # 输出的结果是3
print(r.zrangebylex(name=8,min="[b",max="[f")) # 输出的结果是 ['b', 'c', 'e', 'f', 'd']
print(r.zrangebylex(name=8,min="(b",max="[f")) # 输出的结果是 ['c', 'e', 'f', 'd']

9.Zrangebyscore 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。具有相同分数值的成员按字典序来排列(该属性是有序集提供的,不需要额外的计算)。
默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)。

print(r.zadd("9", "a", 1, "b", 2,"c",3)) # 输出的结果是3
print(r.zrangebyscore("9","1","6")) # 输出的结果是['a', 'b', 'c']
print(r.zadd("9", "c", 11, "d", 21,"e",32))     # 输出的结果是3
print(r.zrangebyscore("9","3","16"))  # 输出的结果是['c']
print(r.zrangebyscore("9","3","36"))  # 输出的结果是['c', 'd', 'e']

10.Zrank 返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。
如果成员是有序集 key 的成员,返回 member 的排名。 如果成员不是有序集 key 的成员,返回 None 。
print(r.zadd("10", "a", 1, "b", 2, "c", 3))  # 输出的结果是3
print(r.zadd("10", "f", 11, "d", 21,"e",32)) # 输出的结果是3
print(r.zrank("10","a")) # 输出的结果是0
print(r.zrank("10","b")) # 输出的结果是1
print(r.zrank("10","e")) # 输出的结果是5
print(r.zrank("10","d")) # 输出的结果是4
print(r.zrank("10","h")) # 输出的结果是None
11. Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。
当 key 存在但不是有序集类型时,返回一个错误。
print(r.zadd("11", "a", 1, "b", 2, "c", 3))  # 输出的结果是3
print(r.zadd("11", "f", 11, "d", 21,"e",32)) # 输出的结果是3
print(r.zrem("11","a")) # 输出的结果是1
print(r.zrem("11","f")) # 输出的结果是1
print(r.zrem("11","h")) # 输出的结果是0
print(r.zrange("11",start=0,end=32)) # 输出的结果是['b', 'c', 'd', 'e'], 其中 a f 已经移除掉
print(r.zrange("11",start=2,end=32)) # 输出的结果是['d', 'e'], 其中 a f 已经移除掉,d e 没有被包涵
12.Zremrangebylex 命令用于移除有序集合中给定的字典区间的所有成员。
被成功移除的成员的数量,不包括被忽略的成员。
print(r.zadd("12", "a", 1, "b", 2, "c", 3))         # 输出的结果是3
print(r.zadd("12", "d", 11, "e", 21,"f",32)) # 输出的结果是3
print(r.zremrangebylex("12",min="[a",max="[c")) # 输出的结果是3
print(r.zrange("12",0,-1)) # 输出的结果是 ['d', 'e', 'f'] 因为 a,b,c已经被移除
13. Zremrangebyrank 命令用于移除有序集中,指定排名(rank)区间内的所有成员。
 print(r.zadd("13", "a", 1, "b", 2, "c", 3))         # 输出的结果是3
print(r.zadd("13", "d", 8, "e", 21,"f",32)) # 输出的结果是3
print(r.zremrangebyrank(name=13,min=1,max=3)) # 输出的结果是3
print(r.zrange("13","0","-1")) # 输出的结果是['a', 'e', 'f'] 因为删除了 b,c,d
14.Zremrangebyscore 命令用于移除有序集中,指定分数(score)区间内的所有成员。
print(r.zadd("14", "a", 1, "b", 2, "c", 3))          # 输出的结果是3
print(r.zadd("14", "d", 8, "e", 21,"f",32)) # 输出的结果是3
print(r.zremrangebyscore(name="14",min="1",max="8")) # 输出的结果是4,删除的a,b,c,d
print(r.zrange(name="14",start=0,end=-1)) # 输出的结果是 ['e', 'f']
15.Zrevrange 命令返回有序集中,指定区间内的成员。
其中成员的位置按分数值递减(从大到小)来排列。
具有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列。
除了成员按分数值递减的次序排列这一点外, ZREVRANGE 命令的其他方面和 ZRANGE 命令一样。
print(r.zadd("15", "a", 1, "b", 2, "c", 3))          # 输出的结果是3
print(r.zadd("15", "d", 8, "e", 21,"f",32)) # 输出的结果是3
print(r.zrevrange(name="15",start=0,end=-1)) # 输出的结果是['f', 'e', 'd', 'c', 'b', 'a']
print(r.zrevrange(name="15",start=1,end=21)) # 输出的结果是['e', 'd', 'c', 'b', 'a']
print(r.zrevrange(name="15",start=3,end=21)) # 输出的结果是['c', 'b', 'a']
16.Zrevrangebyscore 返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。
具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。
除了成员按分数值递减的次序排列这一点外, ZREVRANGEBYSCORE 命令的其他方面和 ZRANGEBYSCORE 命令一样。
print(r.zadd("16", "a", 1, "b", 2, "c", 3))          # 输出的结果是3
print(r.zadd("16", "d", 8, "e", 21,"f",32)) # 输出的结果是3
print(r.zrevrangebyscore(name="16",max=33,min=0)) # 输出的结果是['f', 'e', 'd', 'c', 'b', 'a']
print(r.zrevrangebyscore(name="16",max=20,min=2)) # 输出的结果是['d', 'c', 'b']
17. Zrevrank 命令返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。
排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。
使用 ZRANK 命令可以获得成员按分数值递增(从小到大)排列的排名。
print(r.zadd("17", "a", 1, "b", 2, "c", 3))          # 输出的结果是3
print(r.zadd("17", "d", 4, "e", 5,"f",6)) # 输出的结果是3
print(r.zrevrank(name=17,value="a")) # 输出的结果是5
print(r.zrevrank(name=17,value="c")) # 输出的结果是3
print(r.zrevrank(name=17,value="d")) # 输出的结果是2
print(r.zrevrank(name=17,value="h")) # 输出的结果是None
18.Zscore 命令返回有序集中,成员的分数值。 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 None 。

print(r.zadd("18", "a", 1, "b", 2, "c", 3))   # 输出的结果是3
print(r.zadd("18", "d", 4, "e", 5,"f",6))    # 输出的结果是3
print(r.zscore(name="18",value="a"))          # 输出的结果是1.0
print(r.zscore(name="18",value="c"))          # 输出的结果是3.0
print(r.zscore(name="18",value="f"))          # 输出的结果是6.0
print(r.zscore(name="18",value="h"))          # 输出的结果是None

19.  Zscan 命令用于迭代有序集合中的元素(包括元素成员和元素分值)
返回的每个元素都是一个有序集合元素,一个有序集合元素由一个成员(member)和一个分值(score)组成。
print(r.zadd("20", "a", 1, "b", 2, "c", 3))   # 输出的结果是3
print(r.zscan(name="20")) # 输出的结果是(0L, [('a', 1.0), ('b', 2.0), ('c', 3.0)])
print(r.zadd("20", "d", 4, "e", 5,"f",3)) # 输出的结果是3
print(r.zscan(name="20")) # 输出的结果是 (0L, [('a', 1.0), ('b', 2.0), ('c', 3.0), ('f', 3.0), ('d', 4.0), ('e', 5.0)])

redis对sorted_set进行的相关操作的更多相关文章

  1. redis对list进行的相关操作

    redis对list类型进行的相关操作以及如何在python使用 redis对list类型操作的命令: 命令 语法 概述 返回值 Redis Blpop 命令 BLPOP key1 [key2 ] t ...

  2. redis对hash进行的相关操作

    redis对hash类型操作的相关命令以及如何在python使用这些命令 redis对hash类型操作的命令: 命令 语法 概述 返回值 Redis Hdel 命令 hdel key field [f ...

  3. redis对string进行的相关操作

    redis对string类型操作的相关命令以及如何在python使用这些命令 redis对string类型操作的命令: 命令 语法 概述 返回值 Redis SET 命令  set key value ...

  4. redis对键进行的相关操作

    redis对键操作的相关命令以及如何在python使用这些命令 redis对键操作的命令: 命令 语法 概述 返回值 Redis DEL 命令 del key [key ...] 该命令用于在 key ...

  5. redis对set(无序集合)的相关操作

    redis对set类型(无序集合)操作的相关命令以及如何在python使用这些命令 redis对set类型操作的命令: 命令 语法 概述 返回值 Redis Sadd 命令 sadd key memb ...

  6. openresty 学习笔记三:连接redis和进行相关操作

    openresty 学习笔记三:连接redis和进行相关操作 openresty 因其非阻塞的调用,令服务器拥有高性能高并发,当涉及到数据库操作时,更应该选择有高速读写速度的redis进行数据处理.避 ...

  7. Redis 安装,配置以及数据操作

    Nosql介绍 Nosql:一类新出现的数据库(not only sql)的特点 不支持SQL语法 存储结构跟传统关系型数据库中那种关系表完全不同,nosql中存储的数据都是k-v形式 Nosql的世 ...

  8. redis基础之基本键值操作和使用(三)

    前言 redis安装完毕后开始使用redis,先熟悉命令行操作. redis数据的类型 键:redis的所有的键都是string类型: 值:五种类型 string:字符串类型:一个string最大可以 ...

  9. Redis字符串(STRING)中BIT相关命令

    上篇文章我们对STRING数据类型中一些基本的命令进行了介绍,但是没有涉及到BIT相关的命令,本文我们就来看看几个和BIT相关的命令. 本文是Redis系列的第四篇文章,了解前面的文章有助于更好的理解 ...

随机推荐

  1. aspnetcore.webapi实战k8s健康探测机制 - kubernetes

    1.浅析k8s两种健康检查机制 Liveness k8s通过liveness来探测微服务的存活性,判断什么时候该重启容器实现自愈.比如访问 Web 服务器时显示 500 内部错误,可能是系统超载,也可 ...

  2. 【死磕 Spring】----- IOC 之 加载 Bean

    原文出自:http://cmsblogs.com 先看一段熟悉的代码: ClassPathResource resource = new ClassPathResource("bean.xm ...

  3. cglib根据数据动态生成对象

    最近有个任务:根据查询SQL直接导出报表 实现关键是,怎么根据sql查询的数据动态生成对象列表,想到Cglib动态代理实现 废话少说,上代码: 定义动态生成Java Bean类: import jav ...

  4. php自动加载规范 PSR4 (Thinkphp)

    PSR4是一种自动加载规范,老版本是PSR0,尽管thinkPHP支持PSR4和PSR0的自动加载方式,但是默认也是优先进行PSR4加载,如果失败,再进行PSR0的加载.本篇文章只会讨论PSR4的加载 ...

  5. 深入理解Java虚拟机-第1章-走进Java-读书笔记

    第 1 章 走近 Java 前言 Java 的技术体系主要是由支撑 Java 程序运行的虚拟机.为各开发领域提供接口支持的 Java API.Java 编程语言及许许多多的第三方 Java 框架(如 ...

  6. 那些优秀的.NET开发者----汪宇杰:从重视细节,到成就技术专家

    初识汪宇杰 在长沙.NET技术社区筹建过程中,溪源有幸认识来自上海的MVP汪宇杰Edi Wang.在中国众多的微软MVP中,Edi Wang作为一名九零后,也是一位年轻而充满才气的开发者,或许他或许外 ...

  7. Kubernetes的污点和容忍(上篇)

    背景 搭建了一个k8s(Kubernetes)的事件监听服务,监听事件之后对数据做处理.有天报了一个问题经调查是新版本的k8s集群添加会把unschedule等信息通过污点的方式反映.而这些污点是只有 ...

  8. 105 - kube-scheduler源码分析 - predicate算法注册

    一.predicate注册过程 今天我们来聊聊predicate函数是怎么被注册进去的,也就是要执行的一堆predicate是怎么成为“选中的孩子”.  代码位置:pkg/scheduler/fact ...

  9. 【Json】fastjson与jackson常用操作记录

    本文只是记录fastjson.jackson一些常用的操作方法,没作比较,网上写比较的文章很多啦. 1.对象转Json串 // fastjson String objStr = JSON.toJSON ...

  10. Vue 单选框与单选框组 组件

    radio组件 v-model  : 通过当然绑定的值与input上的value值来确定当前选中项. 在父作用域中通过active设置当前默认选中项,如果选中项发生改变后通过input事件通知传递到父 ...