07_Redis_Sorted Set命令
一:Redis 有序集合(sorted set):有序set集合,专门用来做排行榜
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员 ------- (有序不重复)
不同的是每个元素都会关联一个double类型的分数;Redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
二:Redis 有序集合命令:
2.1:赋值:zadd key score member score2 member2 … :将所有成员以及该成员的分数存放到sorted-set中。如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。
2.2:查看:zscore key member:返回指定成员的分数
zcard key :返回集合中的元素个数
2.3:范围查询:
zrange key start end [withscores]:获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数。(分数由小到大排列)
zrevrange key start end [withscores]:获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数。(分数由大到小排列:排行榜)
2.4:删值:zrem key member[member…]:移除集合中指定的成员,可以指定多个成员。
三:Redis 有序集合使用场景:
1.可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时,可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分TOPTEN的用户信息。当然我们也可以利用ZRANK命令通过username来获取玩家的排行信息。最后我们将组合使用ZRANGE和ZRANK命令快速的获取和某个玩家积分相近的其他用户的信息。
2、sortedet类型还可用于构建索引数据
更多命令参考:http://www.runoob.com/redis/redis-sorted-sets.html