第4章 Redis的SortedSets类型

Redis的SortedSets类型提供了有序的集合操作,如添加、统计数量、移除元素和遍历。ZADD用于添加成员,支持多种条件更新;ZCARD返回成员数量;ZCOUNT统计指定score范围的成员数;ZREM移除成员;ZREMRANGEBYRANK和ZREMRANGEBYSCORE根据排名或分数范围删除成员;ZRANGE则用于按不同方式遍历集合成员。

sortedSet是带有顺序的set。跟sets一样,member是唯一的。

添加
  • ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score memner]

    添加一个或多个score/member是键值对。如果member以存在,则更新它的score并且这个member会再右边再次被插入,确保正确的顺序。

    XX:仅更新以存在的member

    NX:仅新增member,这个member是原先不存在的

    LT:仅更新存在并且新的score小于原来的score的member

    GT:仅更新存在并且新的score大于原来的score的member

    CH:表示返回值是返回被修改的数量(包括:新增和更新)。默认是仅返回仅新增的数量

    Long addNumber = resource.zadd(key, scoreMember);
    
  • ZINCRBY key incrment member

    更新指定member的score。如果member不存在,先把member的score初始化0

    返回值:更新后的score

    Double newScore = resource.zincrby(key, 2, "d");
    
统计数量
  • ZCARD key

    返回member的数量

    返回值:members的数量或者0

    Long membersNum = resource.zcard(key);
    
  • ZCOUNT key min max

    返回score在区间 【mix, max】的member的数量

    Long rangeMinMax = resource.zcount(key, 2, 3);
    
移除元素
  • ZREM key member [member …]

    移除指定的member

    返回值:返回被移除的数量

    Long removedNum = resource.zrem(key, "c");
    
  • ZREMRANGEBYRANK key start stop

    移除rank在区间[start, stop]的member。rank表示index值。0表示score最低的member

    返回值:被移除的数量

    Long removedNum = resource.zremrangeByRank(key, 0, 1);
    
  • ZREMRANGEBYSCORE key min max

    移除score在区间[min, max]的member。指定字符(表示半开区间。(2,6 表示(2, 6]

    返回值:被移除的数量

    Long removedNum = resource.zremrangeByScore(key, "(2", "3");
    
遍历
  • ZRANGE key min max [BYSCORE | BYLEX] [REV] [LIMIT offset count] [WITHSCORES]

    返回指定范围内的members。

    ZRANGE可以指定不同类型查询:1)index 默认

    ​ 2)score

    ​ 3)字典序

    默认是member的顺序根据score从低到高。如果member有相同的score,则按字典序排序。

    offet表示偏移,count表示限制多少数据

    WITHSCORES表示,返回值是member-score的键值对

    Index查询

    默认查询类型是index。参数min和max表示索引值(从0开始)。注意这里范围是闭区间 [min, max]

    Score查询

    加上BYSCORE表示查询类型为按SCORE查询。参数min和max表示score的区间值。区间范围闭区间[min, max] 。我们通过字符(表示半开区间。(2, 4 表示(2,4]

    Set<String> members = resource.zrange(key, 0, -1);
    
    members = resource.zrangeByScore(key, "(1", "4");
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值