跨服排行榜
游戏里为了刺激玩家的攀比心理,经常有各种各样的排行榜。排行榜又可以分为本服排行榜以及跨服排行榜。
简单说来,本服排行榜上的记录来自本服的玩家,而跨服排行榜上的记录是来自所有服务器前N名玩家。通常,跨服排行榜含金量更大,奖励也更为丰富。从技术上而言,实现起来也更为麻烦。
典型地,实现跨服排行榜有一下几种思路。
- 取其中某个服务器作为中心服,用来收集各服排行榜数据并进行广播;
- 使用独立进程,例如web后台,向各个服务拉取排行榜数据;
- 利用Redis的SortedSet,由Redis自己实现排序
本文详细介绍如何使用Redis实现跨服排行榜
Redis集群的简单用法
Redis是一个Key-Value的缓存数据库。这里不做过多介绍。为了提高IO效率,最新的Redis支持集群服务。官方的Redis是不支持Windows环境,所以本文开发环境是在Linux Ubuntu上。Redis的java客户端实现是Jedis。下面的对RedisCluster的简单封装,包括对Redis的各种数据操作。
public enum RedisCluster {
INSTANCE;
private JedisCluster cluster;
public void init() {
String url = "127.0.0.1:8001";
HashSet<HostAndPort> hostAndPorts = new HashSet<>();
String[] hostPort = url.split(":");
HostAndPort hostAndPort = new HostAndPort