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以后的全部元素。