Redis SortedSet

SortedSet 有序集合函数

一个Set集合,可是内部经过score进行排序,排序值从 0 开始。大数据

 

一、添加排序

>zadd key score member [[score member] [score member] ...]ip

将一个或多个 member 元素及其 score 值加入到有序集 key 当中。若是某个 member 已是有序集的成员,那么更新这个 member 的 score 值,并经过从新插入这个 member 元素,来保证该 member 在正确的位置上。ci

 

二、求总数rem

>zcard key字符串

返回有序集 key 的总数。io

 

>zcount key min maxfunction

返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量,注意返回的是数量。遍历

 

>zlexcount key min max

对于一个全部成员的分值都相同的有序集合键 key 来讲, 这个命令会返回该集合中, 成员介于 min 和 max 范围内的元素数量。

 

三、删除

>zrem key member [member ...]

移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。

 

>zremrangebyrank key start end

移除有序集 key 中,指定排名(rank)区间内的全部成员,包含start 和 end

 

>zremrangebyscore key min max

移除有序集 key 中,全部 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。

 

>zremrangebylex key min max

对于一个全部成员的分值都相同的有序集合键 key 来讲, 这个命令会移除该集合中, 成员介于 min 和 max 范围内的全部元素。

 

四、查找

>zrange key start end [WITHSCORES]

返回有序集 key 中,指定排名区间内(包含start 和 end )的成员。其中成员的位置按 score 值递增(从小到大)来排序。具备相同 score 值的成员按字典序(lexicographical order)来排列。

WITHSCORES 选项决定是否返回对应的分数。

 

>zrevrange key start end [WITHSCORES]

和zrange 做用相同,区别是返回的成员是按 score 值递减(从大到小)来排序。

 

>zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

返回有序集 key 中,全部 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

具备相同 score 值的成员按字典序(lexicographical order)来排列。

可选的 LIMIT 参数指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count ),注意当 offset 很大时,定位 offset 的操做可能须要遍历整个有序集,此过程最坏复杂度为 O(N) 时间.

 

>zrevrangebyscore key min max [WITHSCORES] [LIMIT offset count]

和zrangebyscore做用相同,区别是返回的成员是按 score 值递减(从大到小)来排序。

 

>zrangebylex key min max [LIMIT offset count]

当有序集合的全部成员都具备相同的分值时, 有序集合的元素会根据成员的字典序(lexicographical ordering)来进行排序, 而这个命令则能够返回给定的有序集合键 key 中, 值介于 min 和 max 之间的成员。若是有序集合里面的成员带有不一样的分值, 那么命令返回的结果是未指定的(unspecified)。

 

五、排名与取值

>zrank key member

返回有序集 key 中成员 member 的排名。成员按 score 值递增(从小到大)顺序排列而后再取member的排名,排名从0开始。

 

>zrevrank key member

返回有序集 key 中成员 member 的排名。成员按 score 值递减(从大到小)排列的排名而后再取 member的排名,排名从0开始。

 

>zscore key member

返回有序集 key 中,成员 member 的 score 值。

 

 

六、i++

>zincrby key increment member

为有序集 key 的成员 member 的 score 值加上增量 increment 。

 

>zscan key cursor [MATCH pattern] [COUNT count]

根据游标的位置查找指定数量的元素,由于是批量获取,因此不会在大数据状况下堵塞

 

七、集合运算

>zunionstore destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

1)计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。

2)默认状况下,结果集中某个成员的 score 值是全部给定集下该成员 score 值之和 。

3)WEIGHTS

使用 WEIGHTS 选项,你能够为 每一个 给定有序集 分别 指定一个乘法因子(multiplication factor),每一个给定有序集的全部成员的 score 值在传递给聚合函数(aggregation function)以前都要先乘以该有序集的因子。若是没有指定 WEIGHTS 选项,乘法因子默认设置为 1 。

4)AGGREGATE

使用 AGGREGATE 选项,你能够指定并集的结果集的聚合方式。默认使用的参数 SUM ,能够将全部集合中某个成员的 score 值之 和 做为结果集中该成员的 score 值;使用参数 MIN ,能够将全部集合中某个成员的 最小 score 值做为结果集中该成员的 score 值;而参数 MAX 则是将全部集合中某个成员的 最大 score 值做为结果集中该成员的 score 值。

 

>zinterstore destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。默认状况下,结果集中某个成员的 score 值是全部给定集下该成员 score 值之和.

 

 

注意:

lexicographical ordering (就是字符串的ASCII排序)排序指定范围规则

1)合法的 min 和 max 参数必须包含 ( 或者 [ , 其中 ( 表示开区间(指定的值不会被包含在范围以内), 而 [ 则表示闭区间(指定的值会被包含在范围以内)。

2)特殊值 + 和 - 在 min 参数以及 max 参数中具备特殊的意义, 其中 + 表示正无限, 而 - 表示负无限。 所以, 向一个全部成员的分值都相同的有序集合发送命令 ZRANGEBYLEX <zset> - + , 命令将返回有序集合中的全部元素。

3)示例 zrangebylex set [liu + 查找包含liu和排序在liu以后的全部元素。

相关文章
相关标签/搜索