运营类的活动中,经常会有类似积分榜、排行榜的功能需求,实时的展现总的积分、排名,包括他们各自的基本信息,以及自己的积分排名等。
关系型DB对此的支持并不好。实现比较复杂而且会DB带来不小的压力。
之前对Redis Set操作使用比较多,包括smembers、scard、sadd、sdiff等。Redis的zset,即Sorted-Set,与set的区别在于zset加了一个分数(score)与之关联。成员按照分数进行排序。和set一样,成员必须唯一,但是分数可以重复。zset增删改时间复杂度为成员数量的对数,十分高效。
1. 使用API
<pre name="code" class="java">public class RedisUtils {
/**
* 将 member及其 score加入到有序集 key当中.如 member已经是有序集的成员,那么更新这个 member的score,并通过重新插入这个member来保证其在正确的位置上.
* 如果 key不存在,则创建一个空的有序集并执行ZADD操作。当 key存在但不是有序集类型时返回一个错误
* @param key
* @param score
* @param member
* @return 如果是添加的新成员返回1;如果是成员本来就存在并更新成功返回0
*/
Long zadd(String key, double score, String member);
/**
* 为有序集key的成员member的score值加上增量increment
* @param key
* @param increment
* @param member
* @return