• 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开始)

  • 相关阅读:
    P2114 [NOI2014]起床困难综合症(二进制)
    P4577 [FJOI2018]领导集团问题
    P5290 [十二省联考2019]春节十二响(堆+启发式合并)
    P2048 [NOI2010]超级钢琴(RMQ+堆+贪心)
    P4890 Never·island(dp)
    P2617 Dynamic Rankings(树状数组套主席树)
    P5241 序列(滚动数组+前缀和优化dp)
    P3243 [HNOI2015]菜肴制作(拓扑排序)
    【LeetCode每天一题】Combination Sum II(组合和II)
    【LeetCode每天一题】Combination Sum(组合和)
  • 原文地址:https://www.cnblogs.com/john-xiong/p/12159095.html
Copyright © 2020-2023  润新知