Redis 的有序集合和 集合 一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。Redis 正是通过分数来为集合中的成员进行从小到大的排序。
集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
有序集合的成员是唯一的,但分数 score 却可以重复。
192.168.98.70:6379> ZADD haicoder 100 Redis (integer) 1 192.168.98.70:6379> ZADD haicoder 500 Mysql (integer) 1 192.168.98.70:6379> ZADD haicoder 200 Mongo (integer) 1 192.168.98.70:6379> ZADD haicoder 300 SqlServer (integer) 1 192.168.98.70:6379> ZRANGE haicoder 0 -1 WITHSCORES 1) "Redis" 2) "100" 3) "Mongo" 4) "200" 5) "SqlServer" 6) "300" 7) "Mysql" 8) "500" 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 ZADD 命令向键 haicoder 的集合中插入元素 Redis,其分数为 100。使用 ZADD 命令向键 haicoder 的集合中插入元素 Mysql,其分数为 500。
接着,再次使用 ZADD 命令向键 haicoder 的集合中插入元素 Mongo,其分数为 200。使用 ZADD 命令向键 haicoder 的集合中插入元素 SqlServer,其分数为 300。
最后,我们使用 ZRANGE 命令获取键 haicoder 的集合中的所有元素,并且打印出分数。
Redis 的有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。