使用 Redis Zset 有序集合实现排行榜功能(SpringBoot环境)
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Service;
import java.util.Set;
@Service
public class RankingService {
@Autowired
private StringRedisTemplate redisTemplate;
// 获取排行榜前N名的用户
public Set<ZSetOperations.TypedTuple<String>> getTopNUsers(String rankKey, int N) {
return redisTemplate.opsForZSet().reverseRangeByScoreWithScores(rankKey, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, 0, N - 1);
}
// 更新用户分数
public void updateUserScore(String rankKey, String userId, double newScore) {
redisTemplate.opsForZSet().add(rankKey, userId, newScore);
}
// 删除用户分数
public void removeUser(String rankKey, String userId) {
redisTemplate.opsForZSet().remove(rankKey, userId);
}
}
这段代码提供了一个简单的服务类,用于与Redis Zset有序集合交互,实现排行榜功能。它展示了如何获取前N名用户,如何更新用户的分数,以及如何删除用户。这个例子是基于Spring Data Redis的StringRedisTemplate
,它提供了操作Redis的方法。
评论已关闭