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. Linux 桌面玩家指南:14. 数值计算和符号计算

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  2. Quartz+ssm注解方式的最最最最简单使用

    Maven配置 <!-- quartz监控 --> <dependency> <groupId>org.quartz-scheduler</groupId&g ...

  3. 从Android源码修改cpu信息

    cpuinfo 网上的文章都是怎么查看/proc/cpuinfo,一直以为这种东西没法改呢,我还是太天真了./proc/cpuinfo是个文件,只读,想直接写肯定不行的.今天研究了一下,发现它的输出逻 ...

  4. 分布式架构原理解析,Java开发必修课

    1. 分布式术语 1.1. 异常 服务器宕机 内存错误.服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用. 服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上. ...

  5. mysql的学习笔记(六)

    1.字符函数 (1).CONCAT(str1,str2,...)函数,将多列信息合并输出. SELECT CATCAT('hello','mysql') as test (2).CONCAT_WS(' ...

  6. ConfirmCancelUtilDialog【确认取消对话框封装类】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 对确认取消对话框的封装. 前提:调用对话框的Activity必须继承FragmentActivity及其子类(比如AppCompat ...

  7. MaterialCalendarDialog【Material样式的日历对话框】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Material样式的日历对话框 前提条件:Activity界面必须继承FragmentActivity或者其子类(比如AppCom ...

  8. 访问了一次百度网页,你都经历了什么?https及tcp协议揭秘

    打开https://www.baidu.com/ 网页一个简单的动作,都经历了什么?你想探究内部的原理吗?那我们一起去探索吧 1.准备工作 安装好wireshark.Wireshark(前称Ether ...

  9. Java笔记(day11)

    异常:是在运行时期发生的不正常情况. 异常类:在java中用类的形式对不正常情况进行了描述和封装对象,描述不正常的情况的类. 异常就是java通过面向对象的思想将问题封装成了对象.用异常类对其进行描述 ...

  10. java中求质数(素数)的问题

    这篇笔记讲讲关于java中质数的问题. 一.什么是质数(素数)? 定义:质数又称素数.一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数:否则称为合数.它可以有无限个数. 二.ja ...