Redis 有�集�(sorted set)

Redis 有�集�和集�一样也是 string 类型元素的集�,且��许��的�员。

��的是�个元素都会关�一个 double 类型的分数。redis 正是通过分数�为集�中的�员进行从�到大的排�。

有�集�的�员是唯一的,但分数(score)��以��。

集�是通过哈希表实现的,所以添加,删除,查找的��度都是 O(1)。 集�中最大的�员数为 232 - 1 (4294967295, �个集��存储40多亿个�员)。

实例

redis 127.0.0.1:6379> ZADD runoobkey 1 redis
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 2 mongodb
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 0
redis 127.0.0.1:6379> ZADD runoobkey 4 mysql
(integer) 0
redis 127.0.0.1:6379> ZRANGE runoobkey 0 10 WITHSCORES

1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "4"

在以上实例中我们通过命令 ZADD � redis 的有�集�中添加了三个值并关�上分数。


Redis 有�集�命令

下表列出了 redis 有�集�的基本命令:

��命令��述
1ZADD key score1 member1 [score2 member2]
�有�集�添加一个或多个�员,或者更新已存在�员的分数
2ZCARD key
获�有�集�的�员数
3ZCOUNT key min max
计算在有�集�中指定区间分数的�员数
4ZINCRBY key increment member
有�集�中对指定�员的分数加上增� increment
5ZINTERSTORE destination numkeys key [key ...]
计算给定的一个或多个有�集的交集并将结果集存储在新的有�集� destination 中
6ZLEXCOUNT key min max
在有�集�中计算指定字典区间内�员数�
7ZRANGE key start stop [WITHSCORES]
通过索引区间返回有�集�指定区间内的�员
8ZRANGEBYLEX key min max [LIMIT offset count]
通过字典区间返回有�集�的�员
9ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
通过分数返回有�集�指定区间内的�员
10ZRANK key member
返回有�集�中指定�员的索引
11ZREM key member [member ...]
移除有�集�中的一个或多个�员
12ZREMRANGEBYLEX key min max
移除有�集�中给定的字典区间的所有�员
13ZREMRANGEBYRANK key start stop
移除有�集�中给定的排�区间的所有�员
14ZREMRANGEBYSCORE key min max
移除有�集�中给定的分数区间的所有�员
15ZREVRANGE key start stop [WITHSCORES]
返回有�集中指定区间内的�员,通过索引,分数从高到低
16ZREVRANGEBYSCORE key max min [WITHSCORES]
返回有�集中指定分数区间内的�员,分数从高到低排�
17ZREVRANK key member
返回有�集�中指定�员的排�,有�集�员按分数值递�(从大到�)排�
18ZSCORE key member
返回有�集中,�员的分数值
19ZUNIONSTORE destination numkeys key [key ...]
计算给定的一个或多个有�集的并集,并存储在新的 key 中
20ZSCAN key cursor [MATCH pattern] [COUNT count]
迭代有�集�中的元素(包括元素�员和元素分值)