Redis的有序集合操作命令

Posted John-Python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis的有序集合操作命令相关的知识,希望对你有一定的参考价值。

有序集合(zset)就是可以排序的set,通过每个元素关联的score值来为元素进行从小到大的排序,zset中元素不能重复,但是score却可以重复

设定/修改命令

zadd key score member [[score member] [score member] ...]

    将一个或多个member元素及其score值加入到key当中
    score值可以是整数值或双精度浮点数
    如果某个member已经是有序集合的成员,那么更新这个member的score值
    如果key不存在,创建一个空的有序集并执行zadd操作
    返回被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员

zincrby key increment member

    为key的成员member的score值加上增量increment(可以为负数)
    key不存在时创建一个空的有序集并执行zincrby操作
    member成员不存在时,创建该成员并设置其score值为0并执行zincrby操作
    返回member成员的新score值(字符串形式)

移除命令

zrem key member [member ...]:移除key中一个或多个成员,不存在的成员将被忽略。返回被成功移除的成员数量(不包括被忽略的成员)

zremrangebyrank key start stop:移除key中指定下标区间内(包含start和stop)的所有成员。返回移除成员的数量

zremrangebyscore key min max:

    移除key中score值在min和max之间(包括mi和max)的成员
    可以给参数min和max前增加"("括号来使结果不包含
    返回移除成员的数量

获取命令

zrange key start stop [withscores]

    返回key中指定下标(可以为负数)区间内的成员并按score值递增(从小到大)来排序的列表
    具有相同score值的成员按字典序(lexicographical order)来排列
    start大于最大下标或者start>stop,返回空列表
    stop大于最大下标将stop当作最大下标来处理
    withscores选项让成员和它的score值一并返回,返回列表以value1,score1, ..., valueN,scoreN的格式表示

zrevrange key start stop [withscores]:返回key中逆序排序(按score值从大到小)后指定下标(可以为负数)区间内的成员列表

zrangebyscore key min max [withscores] [limit offset count]

    返回key中score值介于min和max之间(包括min和max)的成员
    min和max可以是-inf(无限大)和+inf(无限小),这样可以在不知道最低和最高score的情况下使用zrangebyscore这类命令
    可选的limit参数指定返回结果的数量及区间
    withscores选项让成员和它的score值一并返回
    默认情况下,包括score值等于min和max的成员,可以给参数min和max前增加"("括号来使结果不包含,如:
    zrangebyscore zset (1 5:返回所有1<score<=5的成员
    zrangebyscore zset (5 (10:返回所有5<score<10的成员
    返回指定区间内的有序集成员的列表

zrevrangebyscore key min max [withscores] [limit offset count]:返回key中score值介于min和max之间(包括min和max)的成员并把这些成员逆序排序(按score值从大到小)

zscore key member:返回key成员member的score值(字符串形式),如果member元素不是key的成员或key不存在返回nil

交集并集

zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]

    计算给定的一个或多个有序集的和集(并集)并将该并集(结果集)储存到destination
    numkeys为给定key的数量
    weights选项为每个对应的key分别指定一个乘法因子,对应的key所有成员的score值在传递给聚合函数(aggregate)之前都要先乘以该因子,默认为1
    aggregat选项指定和集(并集)的结果集中score值的聚合方式
        默认为sum,将所有集合中某个相同成员的score值之和作为结果集中该成员的score值;
        min将所有集合中某个相同成员中最小的score值作为结果集中该成员的score值;
        max将所有集合中某个相同成员最大的score值作为结果集中该成员的score值
    返回保存到 destination 的结果集的基数。

zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]

    计算给定的一个或多个有序集的交集并将该交集(结果集)储存到destination
    参数的用法和zunionstore相同

其他命令

zcard key:返回key的基数,key不存在时返回0

zcount key min max:返回key中score值在min和max之间(包括min和max)的成员的数量

zrank key member:返回key中成员member的排名(从0开始),如果member不是key的成员返回nil

zrevrank key member:返回key中成员member逆序排序(按score值从大到小)后的排名(从0开始)

以上是关于Redis的有序集合操作命令的主要内容,如果未能解决你的问题,请参考以下文章

Redis有序集合数据类型操作命令

Redis有序集合数据类型操作命令

Redis中有序集合的常用命令有哪些?

Redis 数据结构操作相关命令

Redis 数据结构操作相关命令

Redis有序集合Sorted set操作