目录
一、Redis 有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 - 1 (4294967295, 每个集合可存储40多亿个成员)。
二、添加成员
(1)向有序集合添加一个或多个成员,或者更新已存在成员的分数
zadd key [NX|XX] score member [score member ...]
示例:
127.0.0.1:6379> zadd age 20 s1 20 s2 22 s3 24 s4
(integer) 4
127.0.0.1:6379> zadd age 25 s5
(integer) 1
三、查看、统计成员
1.查看
(1)通过索引区间返回有序集合成指定区间内的成员
zrange key start stop [WITHSCORES]
(2)返回有序集中指定区间内的成员,通过索引,分数从高到底
zrevrange key start stop [WITHSCORES]
(3)通过分数返回有序集合指定区间内的成员
zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
(4)返回有序集合中指定成员的索引
zrank key member
(5)返回有序集中指定分数区间内的成员,分数从高到低排序
zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
(6)返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
zrevrank key member
(7)返回有序集中,成员的分数值
zscore key member
2.统计
(1)获取有序集合的成员数
zcard key
(2)计算在有序集合中指定区间分数的成员数
zcount key min max
四、移除成员
(1) 移除有序集合中的一个或多个成员
zrem key member [member ...]
(2)移除有序集合中给定的排名区间的所有成员
zremrangebyrank key start stop
(3)移除有序集合中给定的分数区间的所有成员
zrange age 0 -1
五、运算
(1)计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中。Redis Zinterstore 命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和。
zinterstore destination numkeys key [key ...]
(2)计算给定的一个或多个有序集的并集,并存储在新的 key 中。Redis Zunionstore 命令计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。
默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和 。
zinterstore destination numkeys key [key ...]