游戏服务端框架之使用Redis实现跨服排行榜
跨服排行榜
游戏里为了刺激玩家的攀比心理,经常有各种各样的排行榜。排行榜又可以分为本服排行榜以及跨服排行榜。
简单说来,本服排行榜上的记录来自本服的玩家,而跨服排行榜上的记录是来自所有服务器前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(
游戏服务端框架之使用Redis实现跨服排行榜相关推荐
- 游戏服务端框架之本服实时排行榜
目录 设计背景 知识储备 数据结构封装 排行榜设计 设计背景 在游戏服务端框架之使用Redis实现跨服排行榜这篇文章里,讲述了如何使用Redis设计一个全服排行榜工具. 本文主要介绍如何实现一个本服的 ...
- Go游戏服务端框架从零搭建(一)— 架构设计
本教程以Go语言分区游戏服务端框架搭建为例. Go语言是Google开发的一种静态强类型.编译型.并发型.具有垃圾回收功能的编程语言.语法上近似C语言,支持接口.可通过struct包含另一个struc ...
- java游戏服务端框架之跨服匹配服
如今的手游世界,如果没搞个跨服赛事,都不好意思说它是一个手游了. 说到跨服,就不得不说下匹配服了.比如一个跨服天梯赛事,需要满足不同服的玩家能够同屏PK.为了能够把实力接近的玩家作为对手,我们需要一个 ...
- python和cc++哪个适合做游戏_分享一个C++与Python开发的中小型通用游戏服务端框架(跨平台,开源,适合MMORPG游戏)...
在开发一款游戏项目时,在立项时我们往往会考虑或者纠结很多,比如: 1,对于开发来说:服务端和客户端应该选择什么语言?用什么协议通信才更效率?协议后期如何维护?socket是用长连接还是短连接?tcp还 ...
- 手游服务端框架之自定义orm持久化工具
前面一篇文章手游服务端框架之关于玩家数据的解决方案,介绍了当今游戏服务端对玩家数据进行持久化的两种方案.一种是将玩家数据通过json等格式统一打包成字符串或二进制流:另一种是根据模块功能拆分,一个模块 ...
- 顶级 Swift 服务端框架对决 Node.js
本文讲的是顶级 Swift 服务端框架对决 Node.js, 前言 最近我在做服务端 Swift 工作时,我被问到这样的问题: 「在服务端 Swift 能否击败 Node.js?」 Swift 是一个 ...
- 项目实训-千寻-服务端框架搭建
1.项目创建 服务端的开发工具,自然是选用Intellij IDEA了.新建项目,选择WebApplication.记得勾选create web.xml复选框.然后,基本就是一路"下一步&q ...
- Unity【Multiplayer 多人在线】- Socket 通用服务端框架(七)、时间戳和心跳机制
介绍 在阅读了罗培羽著作的Unity3D网络游戏实战一书后,博主综合自己的开发经验与考虑进行部分修改和调整,将通用的客户端网络模块和通用的服务端框架进行提取,形成专栏,介绍Socket网络编程,希望对 ...
- 手游服务端框架之后台管理工具
后台管理工具在游戏运营中的作用 手游版本的更新迭代是非常频繁的,有些项目甚至每个星期都会进行停服更新.也就是说,对于生产环境的游戏进程,我们必须有工具能够对游戏服务进行维护.例如更新维护,或者对游戏内 ...
最新文章
- 机械加工工艺师手册_机械加工工艺师——机床应用篇
- rxjs里subscribeToArray的一个JavaScript模拟实现
- 虚拟化运维工具对金融行业的解决方案
- ABP VNext实践之搭建可用于生产的IdentityServer4
- c语言switch为什么要加break,c语言学习笔记 switch case语句为什么要加break
- 《动手学深度学习》 第二天 (自动求梯度)
- C Tricks(三)—— 以一维数组的形式对二维数组赋值
- StringTokenizer字符串分解器
- 美团面试-2016校园招聘
- 一文排除R语言热力图所有的坑
- 神秘的古文明 ———— 埃及文化
- 三角形周长最短问题_什么样的三角形周长最短
- 设计模式学习总结系列应用实例
- flash loader下载使用说明
- 如何找国外作者的matlab,如何与外国学者用电子邮件联系(索要论文或者代码)...
- 可视化|历届奥运会数据可视化
- 表妹想学编程,我给她看了一张图,看完后她说还是算了吧,不学了
- 转:微软COFEE工具近日泄漏到网上
- IBM Storwize V3500存储配置
- 运动控制卡应用开发教程之激光振镜控制
热门文章
- word文档加密漏洞破解方法详解
- 数据结构之 二叉树的存储和遍历总结
- 最新源码交易网系统HTML源码(可商用)
- 普通话-命题说话21-30
- Win7 提示“请考虑更换电池”
- 无人机三维建模的优势有哪些?
- 万能通用的各大网站(全民简历、简历本等) 简历模板 -- 免费下载方法
- 南大通用GBase8s 常用SQL语句(120) DISCONNECT 语句
- JAVA画色盲图_一个色盲竟然能画出这么精美的色彩...
- kafka —— consumers 消费者 group 找不到得原因