import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Service;
import java.util.Set;
@Service
public class LeaderboardService {
@Autowired
private RedisTemplate<String, String> redisTemplate;
// 添加分数到排行榜
public void addScoreToLeaderboard(String leaderboardName, String userId, double score) {
ZSetOperations<String, String> zSetOps = redisTemplate.opsForZSet();
zSetOps.add(leaderboardName, userId, score);
}
// 获取排行榜上某个用户的分数
public Double getUserScore(String leaderboardName, String userId) {
ZSetOperations<String, String> zSetOps = redisTemplate.opsForZSet();
return zSetOps.score(leaderboardName, userId);
}
// 获取排行榜前N名的用户ID
public Set<String> getTopNUserIDs(String leaderboardName, int N) {
ZSetOperations<String, String> zSetOps = redisTemplate.opsForZSet();
return zSetOps.reverseRange(leaderboardName, 0, N - 1);
}
}
这段代码提供了一个简单的LeaderboardService,用于与Redis交互,实现添加分数、获取用户分数和获取排行榜前N名用户ID的功能。这个服务类可以被控制器或其他服务类调用来执行这些操作。