一:Redis 有序集合(sorted set):有序set集合,专门用来做排行榜

(有序不重复)

Redis正是通过分数来为集合中的成员进行从小到大的排序。

  有序集合的成员是唯一的,但分数(score)却可以重复。

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

二:Redis 有序集合命令:

zadd key score member score2 member2

    

redis 有序集合查询指定成员是否存在 redis有序集合命令_Redis

zscore key member:返回指定成员的分数

    

redis 有序集合查询指定成员是否存在 redis有序集合命令_有序集合_02

zcard key :返回集合中的元素个数

    

redis 有序集合查询指定成员是否存在 redis有序集合命令_Redis_03

  2.3:范围查询:

    zrange key start end [withscores]:获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数。(分数由小到大排列)

    

redis 有序集合查询指定成员是否存在 redis有序集合命令_有序集合_04

      zrevrange key start end [withscores]:获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数。(分数由大到小排列:排行榜)

    

redis 有序集合查询指定成员是否存在 redis有序集合命令_Redis_05

zrem key member[member…]:移除集合中指定的成员,可以指定多个成员。

    

redis 有序集合查询指定成员是否存在 redis有序集合命令_redis_06

三:Redis 有序集合使用场景:

  1.可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时,可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分TOPTEN的用户信息。当然我们也可以利用ZRANK命令通过username来获取玩家的排行信息。最后我们将组合使用ZRANGE和ZRANK命令快速的获取和某个玩家积分相近的其他用户的信息。

  2、sortedet类型还可用于构建索引数据

 更多命令参考:http://www.runoob.com/redis/redis-sorted-sets.html