1. zset是string类型的有序集合, 不允许有重复的成员。每个成员都会关联一个double类型的分数, Redis正是通过这个分数值, 来为集合中的成员进行从小到大排序的。集合中的成员是唯一的, 但分数(score)却可以重复。集合是通过哈希表实现的, 所以添加、删除、查找的复杂度都是O(1)。集合中最大的成员数为 (4294967295, 每个集合可存储40多亿个成员)。
2. 向有序集合添加一个或多个成员
2.1. 语法: zadd key score1 member1 [score2 member2]。
2.2. zadd命令用于将一个或多个成员及其分数加入到集合中。如果某个成员已经是集合的成员了, 那么就更新这个成员的分数值, 并且根据这个分数值, 来保证该成员在正确的位置上。如果有序集合key不存在, 则创建该key的有序集并执行zadd操作。当key存在, 但不是有序集类型时, 返回一个错误。
2.3. 返回被成功添加的新成员的数量, 不包括那些被更新的、已经存在的成员。
2.4. 实例
3. 通过索引区间返回有序集合指定区间内的成员
3.1. 语法: zrange key start stop [withscores]。
3.1. zrange命令返回有集合指定区间内的成员。其中成员的位置按分数值递增(从小到大)来排序。具有相同分数值的成员按字典序(lexicographical order)来排列。下标参数start和stop都以0为底, 也就是说, 以0表示集合的第一个成员, 以1表示集合的第二个成员, 以此类推。你也可以使用负数下标, 以-1表示最后一个成员, -2表示倒数第二个成员, 以此类推。
3.1. 返回指定区间内, 带有分数值(可选)的成员列表。
3.4. 实例
4. 通过索引区间返回有序集合指定区间内的成员(分数从高到低)
4.1. 语法: zrevrange key start stop [withscores]。
4.2. zrevrange命令返回集合指定区间内的成员。其中成员的位置按分数值递减(从大到小)来排列。具有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列。
4.3. 返回指定区间内, 带有分数值(可选)的成员列表。
4.4. 实例
5. 获取有序集合的成员数
5.1. 语法: zcard key。
5.2. zcard命令用于计算集合中成员的数量。
5.3. 当key存在且是有序集类型时, 返回集合中成员的数量。当key不存在时, 返回0。
5.4. 实例
6. 返回有序集合中指定成员的索引
6.1. 语法: zrank key member。
6.2. zrank返回集合中指定成员的排名(下标)。其中集合的成员按分数值递增(从小到大)顺序排列。
6.3. 如果成员是集合key的成员, 返回member的排名(下标)。如果成员不是集合key的成员, 返回nil。
6.4. 实例
7. 返回有序集中成员的分数值
7.1. 语法: zscore key member。
7.2. zscore命令返回集合中, 成员的分数值。如果成员不是集合key的成员或key不存在, 返回nil。
7.3. 返回成员的分数值, 以字符串形式表示。
7.4. 实例
8. 返回有序集合中指定成员的排名(从大到小)
8.1. 语法: zrevrank key member。
8.2. zrevrank命令返回集合中指定成员的排名(下标)。其中集合中成员按分数值递减(从大到小)排序。排名以0为底, 也就是说, 分数值最大的成员排名为0。
8.3. 如果成员是有序集key的成员, 返回成员的排名。如果成员不是有序集key的成员, 返回nil。
8.4. 实例
9. 计算在有序集合中指定区间分数的成员数
9.1. 语法: zcount key min max。
9.2. zcount命令用于计算有序集合中指定分数区间的成员数量。
9.3. 返回分数值在min和max之间(默认包括score值等于min和max)的成员的数量。
9.4. 实例
10. 有序集合中对指定成员的分数加上增量increment
10.1. 语法: zincrby key increment member。
10.2. zincrby命令对有序集合中指定成员的分数加上增量increment。可以通过传递一个负数值increment, 让分数减去相应的值。当key不存在时, 则创建该key的有序集并执行zadd操作。当member不是key的成员时, 直接给该key的有序集合中添加值。当key不是有序集类型时, 返回一个错误。
10.3. 返回member成员的新分数值, 以字符串形式表示。
10.4. 实例
11. 将所有给定的有序集的交集存储在新的有序集合中
11.1. 语法: zinterstore destination numkeys key [key ...]。
11.2. zinterstore命令将一个或多个有序集的交集储存到destination中, 其中给定key的数量必须是numkeys参数指定的数量。默认情况下, 结果集中某个成员的分数值是所有给定集和中该成员分数值之和。
11.3. 返回保存到目标结果集的成员数量。
11.4. 实例
12. 将所有给定的有序集的并集存储在新的有序集合中
12.1. 语法: zunionstore destination numkeys key [key ...]。
12.2. zunionstore命令将一个或多个有序集的并集储存到destination中, 其中给定key的数量必须是numkeys参数指定的数量。默认情况下, 结果集中某个成员的分数值是所有给定集和中该成员分数值之和。
12.3. 返回保存到destination的结果集的成员数量。
12.4. 实例
13. 移除有序集合中的一个或多个成员
13.1. 语法: zrem key member [member ...]。
13.2. zrem命令用于移除有序集中的一个或多个成员, 不存在的成员将被忽略。当key存在但不是有序集类型时, 返回一个错误。
13.3. 返回被成功移除的成员的数量, 不包括被忽略的成员。
13.4. 实例
14. 移除有序集合中给定的排名区间的所有成员
14.1. 语法: zremrangebyrank key start stop。
14.2. zremrangebyrank命令用于移除有序集中, 指定排名(下标)区间内的所有成员。
14.3. 返回被移除成员的数量。
14.4. 实例
15. 移除有序集合中给定的分数区间的所有成员
15.1. 语法: zremrangebyscore key min max。
15.2. zremrangebyscore命令用于移除有序集中, 指定分数(score)区间内的所有成员。
15.3. 返回被移除成员的数量。
15.4. 实例