游戏中存在各种各样的排行榜,比如玩家的等级排名、分数排名等。玩家在排行榜中的名次是其实力的象征,位于榜单前列的玩家在虚拟世界中拥有无尚荣耀,所以名次也就成了核心玩家的追求目标。
一个典型的游戏排行榜包括以下常见功能:
能够记录每个玩家的分数;
能够对玩家的分数进行更新;
能够查询每个玩家的分数和名次;
能够按名次查询排名前N名的玩家;
能够查询排在指定玩家前后M名的玩家。
更进一步,上面的操作都需要在短时间内实时完成,这样才能最大程度发挥排行榜的效用。
由于一个玩家名次上升x位将会引起x+1位玩家的名次发生变化(包括该玩家),如果采用传统数据库(比如MySQL)来实现排行榜,当玩家人数较多时,将会导致对数据库的频繁修改,性能得不到满足,所以我们只能另想它法。
Redis作为NoSQL中的一员,近年来得到广泛应用。与Memcached相比,Redis拥有更多的数据类型和操作接口,具有更大的适用范围,其中的有序集合(sorted set,也称为zset)就非常适合于排行榜的构建。下面简要总结一下。
1. Redis的安装
Ubuntu下安装Redis非常简单,执行如下命令即可:
$ sudo apt-get install redis-server
安装完毕,运行命令行客户端redis-cli就可以访问本地redis服务器。
$ redis-cli
redis 127.0.0.1:6379>
如果要使用最新版本,需要到Redis官网(redis.io)下载最新的代码自行编译&