跨服排行榜
遊戲裡為了刺激玩家的攀比心理,經常有各種各樣的排行榜。排行榜又可以分為本服排行榜以及跨服排行榜。
簡單說來,本服排行榜上的記錄來自本服的玩家,而跨服排行榜上的記錄是來自所有伺服器前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(