基于Redis实现在线游戏积分排行榜
体验地址:https://developer.aliyun.com/adc/scenario/44d54481170f4914996d3ae53b818f32?spm=a2c6h.15013979.J_7591448770.47.60ff7077owk8FW
体验目标
本场景将提供一台配置了CentOS 7.7的ECS实例(云服务器)和一个Redis 5.0数据库实例。通过本教程的操作,您可以使用Java语言实现基于Redis数据库的游戏玩家积分排行榜功能。
背景知识
- Redis
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets) 和有序集合(sorted sets)等类型。ZSet(sorted sets)是一个有序的集合,内部使用HashMap和跳跃表(SkipList)来保证数据的有序存储,HashMap里放的是成员到Score的映射,而跳跃表里存放的是所有的成员,排序依据是HashMap里存的Score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。排行榜是有序集合的经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。
- 云数据库Redis版
云数据库Redis版(ApsaraDB for Redis)是兼容开源Redis协议标准、提供内存加硬盘的混合存储方式的数据库服务,基于高可靠双机热备架构及可平滑扩展的集群架构,满足高读写性能场景及弹性变配的业务需求。
- Apache Maven
Maven是Apache开源的一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。但是由于国外的仓库经常连接不上,即便是连接上,下载速度也很慢。阿里云提供了基于Maven官方的镜像仓库,镜像仓库采用OSS(对象存储)作为后端存储,下载速度快,支持高并发,而且全站进行了HTTPS加密,更安全。
学习目录
- 实验详情
-
- 创建资源
-
- 连接ECS服务器
-
- 搭建Java环境
-
- 开发游戏玩家积分排行榜功能
创建资源
-
在页面左侧,单击 云产品资源 下拉菜单,查看本次实验资源。
-
单击 免费开通 创建所需资源。
资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:IP地址、用户名和密码等。
连接ECS服务器
- 打开终端工具。
- Windows:打开命令窗口。
- MAC:打开命令行终端Terminal。
Windows用户请检查系统中是否安装有SSH工具。检查方法:
在终端中输入命令 ssh -V 。
ssh -V
如果显示SSH版本则表示已安装,如下图所示。
如果未安装,请下载安装 OpenSSH工具。
- 在终端中输入连接命令ssh [username]@[ipaddress]。
您需要将其中的username和ipaddress替换为步骤一中创建的ECS服务器的弹性公网IP。例如:
ssh root@123.123.123.123
命令显示结果如下:
-
输入yes。
-
同意继续后将会提示输入登录密码。 密码为已创建的云服务的ECS的登录密码。
登录成功后会显示如下信息。
搭建Java环境
本步骤将在ECS服务器上搭建一个Java开发环境,包括OpenJDK 1.8和Maven 3.6.3,并配置阿里云镜像仓库。
操作步骤:
- 安装OpenJDK 1.8。
yum -y install java-1.8.0-openjdk-devel.x86_64
- 下载Maven安装包。
wget https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
- 将下载的安装包解压到/usr/local/目录,并将安装目录重命名。
tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /usr/local/ &&
mv /usr/local/apache-maven-3.6.3/ /usr/local/maven
- 将Maven的可执行文件目录加入到系统环境变量中,并使用source命令使/etc/profile文件中的内容立即生效。
echo "export PATH=$PATH:/usr/local/maven/bin" >> /etc/profile
source /etc/profile
- 执行以下命令打开镜像仓库配置文件,添加阿里云镜像仓库配置。
a. 使用vim打开镜像仓库配置文件。
vim /usr/local/maven/conf/settings.xml
b. 进入vim编辑器页面后输入 :/mirrors ,搜索并跳转到 标签的位置。
c. 按下 n 键跳转到第二个没有被注释的标签位置。
d. 按下 o 键,另起一行进行编辑,粘贴以下内容。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
e. 按下 ECS 退出编辑模式,输入 :wq 保存并退出vim编辑器。
添加阿里云镜像仓库配置如下图所示:
开发游戏玩家积分排行榜功能
操作步骤:
- 执行以下命令创建并进入工作空间。
mkdir -p demo/src/main/java/test/ && cd demo
- 参考以下步骤编辑代码文件。
a. 使用vim打开GameRankSample.java文件。
vim src/main/java/test/GameRankSample.java
b. 输入:set paste 回车后按下i键进入vim的粘贴插入模式,新增以下内容。
package test;
import java.util.ArrayList;
import java.util.List