Redis-ZSET

有序集合ZET

场景

  • 排行榜(热销商品,帖子排名,热门数据)
  • 各类有序榜单(成绩排名,关注时间排名)

SET对比

  • 数据唯一的集合
  • SET无序,ZSET有序

命令

ZADD

  • ZADD key score member[[score member][score member]...]
  • 将一个或多个score,member插入到有序集合中
  • 如果某个 member 已经是有序集的成员,那么更新这个 memberscore 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上
  • score 可以是整数或双精度浮点数
  • 如果 key 不存在,则创建一个空的有序集并执行操作

ZCARD

  • ZCARD key
  • 统计有序集合中的元素个数

ZCOUNT

  • ZCOUNT key min max
  • 返回有序集合score在min,和max之间的个数,包含min,max

ZLEXCOUNT

  • ZLEXCOUNT key min max
  • 返回有序集合中member在min,和max之间的的元素个数,包含min,max

ZINCRBY

  • ZINCRBY key increment member
  • 增加/减少member的score
  • 当key不存在或member不存在时,会执行ZADD key increment member操作

ZUNIONSTORE

  • ZUNIONSTORE destination unmkeys key[key...][WEIGHTS weight [weight...]] [AGGREGATE SUM|MIN|MAX]
  • 计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination
  • 默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之
  • 使用 WEIGHTS 选项时,可以为各个有序集合输入指定一个乘法系数(Multiplication factor )。这意味着在将每个有序集合输入中的每个元素的分值传递给聚合函数(Aggregation function)之前,会将该分值乘以对应的系数。当未给定 WEIGHTS 选项时,乘法系数默认为 1
  • 使用 AGGREGATE 选项时,可以指定并集运算结果的聚合方式。该选项默认值为 SUM,即将输入中所有存在该元素的集合中对应的分值全部加一起。当选项被设置为 MIN 或 MAX 任意值时,结果集合将保存输入中所有存在该元素的集合中对应的分值的最小或最大值
  • 如果目标键 destination 已经存在,将会被覆盖。

ZINTERSTORE

  • ZINTERSTORE destination numkeys key [key...] [WEIGHTS weight [weight...]] [ARGREGATE SUM|MIN|MAX]
  • ZUNIONSTORE,区别在于,此命令是交集

ZSCORE

  • ZSCORE key member
  • 返回有序集合中成员member的score值
  • 如果不存在返回nil

ZRANK

  • ZRANK key member
  • 返回有序集合key中成员member的排名.
  • 按照score的值从小到大排序

ZREVRANK

  • ZREVRANK key member
  • 返回有序集合key中成员member的排名.
  • 从大到小排列

ZRANGE

  • ZRANGE key start stop[WITHSCORES]
  • 返回从start到stop之间的成员
  • 通过WITHSCORES让成员和值一起返回
  • 成员按照score的值递减排列(从大到小)

ZREVRANGE

  • ZREVRANGE key start stop [WITHSCORES]
  • ZRANGE,成员按照score递增排列(从小到大)

ZRANGEBYSCORE

  • ZRANGEBYSCORE key min max [WITHSCORES][LIMIT offset count]
  • 返回有序集合key中,所有score值位于min,max之间(包括min,max)的成员
  • 按照score的值递增(从小到大)排列
  • LIMIT参数指定返回结果的数量以及区间(就像SQL中的 SELECT LIMIT offset, count)

ZREVRANGEBYSCORE

  • ZREVRANGEBYSCORE key max min [WITHSCORES][LIMIT offset count]
  • 同上,区别是按照score的值递减排列(从大到小)

ZSCAN

  • 类似SCAN

ZREM

  • ZREM key member[member...]
  • 移除有序集合中一个或多个成员,不存在的成员将被忽略

ZREMRANGEBYLEX

  • ZREMRANGEBYLEX key min max
  • 删除集合中指定区间score完全相同的元素

ZREMRANGEBYSCORE

  • ZREMRANGEBYSCORE key min max
  • 移除集合中score在min,max(包含minx,max)之间的成员

ZREMRANGEBYRANK

  • ZREMRANGEBYRANK key start stop
  • 删除指定排名区间内的成员,包含start,stop

ZPOPMAX

  • ZPOPMAX key[count]
  • 删除并返回集合中count个分数最高的成员
  • 返回的元素按照score从大到小排列
  • 起始版本5.0.0

ZPOPMIN

  • 同上,区别在于是返回分数最低的

BZPOPMAX,BZPOPMIN

  • 分别是ZPOPMAX,ZPOPMIN的堵塞版本
  • BZPOPMAX key[key...]timeout
  • BZPOPMIN key[key...]timeout