448
阿里云
游戏玩家排行榜__最佳实践_云数据库 Redis 版-阿里云
游戏玩家积分排行榜
场景介绍
ApsaraDB for Redis 在功能上与 Redis 基本一致,因此很容易用它来实现一个在线游戏中的积分排行榜功能。
代码示例
import java.util.ArrayList;import java.util.List;import java.util.Set;import java.util.UUID;import redis.clients.jedis.Jedis;import redis.clients.jedis.Tuple;public class GameRankSample {static int TOTAL_SIZE = 20;public static void main(String[] args){//连接信息,从控制台可以获得String host = "xxxxxxxxxx.m.cnhz1.kvstore.aliyuncs.com";int port = 6379;Jedis jedis = new Jedis(host, port);try {//实例ID及密码String authString = jedis.auth("xxxxxxxxxx:yyyyyyy");//passwordif (!authString.equals("OK")){System.err.println("AUTH Failed: " + authString);return;}//Key(键)String key = "游戏名:奔跑吧,阿里!";//清除可能的已有数据jedis.del(key);//模拟生成若干个游戏玩家List<String> playerList = new ArrayList<String>();for (int i = 0; i < TOTAL_SIZE; ++i){//随机生成每个玩家的IDplayerList.add(UUID.randomUUID().toString());}System.out.println("输入所有玩家 ");//记录每个玩家的得分for (int i = 0; i < playerList.size(); i++){//随机生成数字,模拟玩家的游戏得分int score = (int)(Math.random()*5000);String member = playerList.get(i);System.out.println("玩家ID:" + member + ", 玩家得分: " + score);//将玩家的ID和得分,都加到对应key的SortedSet中去jedis.zadd(key, score, member);}//输出打印全部玩家排行榜System.out.println();System.out.println(" "+key);System.out.println(" 全部玩家排行榜 ");//从对应key的SortedSet中获取已经排好序的玩家列表Set<Tuple> scoreList = jedis.zrevrangeWithScores(key, 0, -1);for (Tuple item : scoreList) {System.out.println("玩家ID:"+item.getElement()+", 玩家得分:"+Double.valueOf(item.getScore()).intValue());}//输出打印Top5玩家排行榜System.out.println();System.out.println(" "+key);System.out.println(" Top 玩家");scoreList = jedis.zrevrangeWithScores(key, 0, 4);for (Tuple item : scoreList) {System.out.println("玩家ID:"+item.getElement()+", 玩家得分:"+Double.valueOf(item.getScore()).intValue());}//输出打印特定玩家列表System.out.println();System.out.println(" "+key);System.out.println(" 积分在1000至2000的玩家");//从对应key的SortedSet中获取已经积分在1000至2000的玩家列表scoreList = jedis.zrangeByScoreWithScores(key, 1000, 2000);for (Tuple item : scoreList) {System.out.println("玩家ID:"+item.getElement()+", 玩家得分:"+Double.valueOf(item.getScore()).intValue());}} catch (Exception e) {e.printStackTrace();}finally{jedis.quit();jedis.close();}}}
运行结果
在输入了正确的 ApsaraDB for Redis 实例访问地址和密码之后,运行以上 Java 程序,输出结果如下:
输入所有玩家玩家ID:9193e26f-6a71-4c76-8666-eaf8ee97ac86, 玩家得分: 3860玩家ID:db03520b-75a3-48e5-850a-071722ff7afb, 玩家得分: 4853玩家ID:d302d24d-d380-4e15-a4d6-84f71313f27a, 玩家得分: 2931玩家ID:bee46f9d-4b05-425e-8451-8aa6d48858e6, 玩家得分: 1796玩家ID:ec24fb9e-366e-4b89-a0d5-0be151a8cad0, 玩家得分: 2263玩家ID:e11ecc2c-cd51-4339-8412-c711142ca7aa, 玩家得分: 1848玩家ID:4c396f67-da7c-4b99-a783-25919d52d756, 玩家得分: 958玩家ID:a6299dd2-4f38-4528-bb5a-aa2d48a9f94a, 玩家得分: 2428玩家ID:2e4ec631-1e4e-4ef0-914f-7bf1745f7d65, 玩家得分: 4478玩家ID:24235a85-85b9-476e-8b96-39f294f57aa7, 玩家得分: 1655玩家ID:e3e8e1fa-6aac-4a0c-af80-4c4a1e126cd1, 玩家得分: 4064玩家ID:99bc5b4f-e32a-4295-bc3a-0324887bb77e, 玩家得分: 4852玩家ID:19e2aa6b-a2d8-4e56-bdf7-8b59f64bd8e0, 玩家得分: 3394玩家ID:cb62bb24-1318-4af2-9d9b-fbff7280dbec, 玩家得分: 3405玩家ID:ec0f06da-91ee-447b-b935-7ca935dc7968, 玩家得分: 4391玩家ID:2c814a6f-3706-4280-9085-5fe5fd56b71c, 玩家得分: 2510玩家ID:9ee2ed6d-08b8-4e7f-b52c-9adfe1e32dda, 玩家得分: 63玩家ID:0293b43a-1554-4157-a95b-b78de9edf6dd, 玩家得分: 1008玩家ID:674bbdd1-2023-46ae-bbe6-dfcd8e372430, 玩家得分: 2265玩家ID:34574e3e-9cc5-43ed-ba15-9f5405312692, 玩家得分: 3734游戏名:奔跑吧,阿里!全部玩家排行榜玩家ID:db03520b-75a3-48e5-850a-071722ff7afb, 玩家得分:4853玩家ID:99bc5b4f-e32a-4295-bc3a-0324887bb77e, 玩家得分:4852玩家ID:2e4ec631-1e4e-4ef0-914f-7bf1745f7d65, 玩家得分:4478玩家ID:ec0f06da-91ee-447b-b935-7ca935dc7968, 玩家得分:4391玩家ID:e3e8e1fa-6aac-4a0c-af80-4c4a1e126cd1, 玩家得分:4064玩家ID:9193e26f-6a71-4c76-8666-eaf8ee97ac86, 玩家得分:3860玩家ID:34574e3e-9cc5-43ed-ba15-9f5405312692, 玩家得分:3734玩家ID:cb62bb24-1318-4af2-9d9b-fbff7280dbec, 玩家得分:3405玩家ID:19e2aa6b-a2d8-4e56-bdf7-8b59f64bd8e0, 玩家得分:3394玩家ID:d302d24d-d380-4e15-a4d6-84f71313f27a, 玩家得分:2931玩家ID:2c814a6f-3706-4280-9085-5fe5fd56b71c, 玩家得分:2510玩家ID:a6299dd2-4f38-4528-bb5a-aa2d48a9f94a, 玩家得分:2428玩家ID:674bbdd1-2023-46ae-bbe6-dfcd8e372430, 玩家得分:2265玩家ID:ec24fb9e-366e-4b89-a0d5-0be151a8cad0, 玩家得分:2263玩家ID:e11ecc2c-cd51-4339-8412-c711142ca7aa, 玩家得分:1848玩家ID:bee46f9d-4b05-425e-8451-8aa6d48858e6, 玩家得分:1796玩家ID:24235a85-85b9-476e-8b96-39f294f57aa7, 玩家得分:1655玩家ID:0293b43a-1554-4157-a95b-b78de9edf6dd, 玩家得分:1008玩家ID:4c396f67-da7c-4b99-a783-25919d52d756, 玩家得分:958玩家ID:9ee2ed6d-08b8-4e7f-b52c-9adfe1e32dda, 玩家得分:63游戏名:奔跑吧,阿里!Top 玩家玩家ID:db03520b-75a3-48e5-850a-071722ff7afb, 玩家得分:4853玩家ID:99bc5b4f-e32a-4295-bc3a-0324887bb77e, 玩家得分:4852玩家ID:2e4ec631-1e4e-4ef0-914f-7bf1745f7d65, 玩家得分:4478玩家ID:ec0f06da-91ee-447b-b935-7ca935dc7968, 玩家得分:4391玩家ID:e3e8e1fa-6aac-4a0c-af80-4c4a1e126cd1, 玩家得分:4064游戏名:奔跑吧,阿里!积分在1000至2000的玩家玩家ID:0293b43a-1554-4157-a95b-b78de9edf6dd, 玩家得分:1008玩家ID:24235a85-85b9-476e-8b96-39f294f57aa7, 玩家得分:1655玩家ID:bee46f9d-4b05-425e-8451-8aa6d48858e6, 玩家得分:1796玩家ID:e11ecc2c-cd51-4339-8412-c711142ca7aa, 玩家得分:1848
最后更新:2016-12-16 17:17:00
上一篇:
参数设置__用户指南_云数据库 Redis 版-阿里云
下一篇:
商品相关性分析__最佳实践_云数据库 Redis 版-阿里云
云上系统专家保障(标准版)__工作说明书_尊享服务_支持计划-阿里云
自动续费__购买实例_购买指南_云服务器 ECS-阿里云
权限__授权管理_用户指南_访问控制-阿里云
用户实例与授权示例__用户手册_云服务总线 CSB-阿里云
发布APP__快速开始_移动数据分析-阿里云
InstanceTypeFamilyItemType__数据类型_API 参考_云服务器 ECS-阿里云
公共云与金融云间的数据迁移__最佳实践_数据传输-阿里云
查询可用区__地域相关接口_API 参考_云服务器 ECS-阿里云
PermissionType__数据类型_API 参考_云服务器 ECS-阿里云
下载文件__Java-SDK_SDK 参考_对象存储 OSS-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云