排行榜

  • ZADD

ZADD key score member [[score member] [score member] ...]

将一个或多个member元素及其score值加入到有序集key当中。

如果某个member已经是有序集的成员,那么更新这个member的score值,并通过重新插入这个member元素,来保证该member在正确的位置上。

score值可以是整数值或双精度浮点数。

如果key不存在,则创建一个空的有序集并执行ZADDarrow-up-right操作。

当key存在但不是有序集类型时,返回一个错误。

对有序集的更多介绍请参见sorted setarrow-up-right

在 Redis 2.4 版本以前,ZADDarrow-up-right每次只能添加一个元素。

可用版本:

>= 1.2.0

时间复杂度:

O(M*log(N)), N 是有序集的基数, M 为成功添加的新成员的数量。

返回值:

被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。

  • ZRANGE

ZRANGE key start stop [WITHSCORES]

返回有序集key中,指定区间内的成员。

其中成员的位置按score值递增(从小到大)来排序。

具有相同score值的成员按字典序(lexicographical orderarrow-up-right)来排列。

如果你需要成员按score值递减(从大到小)来排列,请使用ZREVRANGEarrow-up-right命令。

下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。

你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。

超出范围的下标并不会引起错误。

比如说,当 start 的值比有序集的最大下标还要大,或是 start > stop 时, ZRANGE 命令只是简单地返回一个空列表。

另一方面,假如 stop 参数的值比有序集的最大下标还要大,那么 Redis 将 stop 当作最大下标来处理。

可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, ..., valueN,scoreN 的格式表示。

客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。

可用版本:

>= 1.2.0

时间复杂度:

O(log(N)+M), N 为有序集的基数,而 M 为结果集的基数。

返回值:

指定区间内,带有 score 值(可选)的有序集成员的列表。

  • ZRANK

ZRANK key member

返回有序集key中成员member的排名。其中有序集成员按score值递增(从小到大)顺序排列。

排名以0为底,也就是说,score值最小的成员排名为0。

使用ZREVRANKarrow-up-right命令可以获得成员按score值递减(从大到小)排列的排名。

可用版本:

>= 2.0.0

时间复杂度:

O(log(N))

返回值:

如果 member 是有序集 key 的成员,返回 member 的排名。

如果 member 不是有序集 key 的成员,返回 nil 。

  • 相关排行榜示例

  • Java 应用示例

User.java

自定义序列化封装类

测试类

测试结果

  • 补充

先关SortedSet集合请参考,官方文档:http://doc.redisfans.com/sorted_set/index.htmlarrow-up-right

Last updated