跟着“小枫社长”用Redis搭建游戏排行榜
实验步骤 maven下载可改为3.8.8或3.9.2版本,其余步骤都很顺利 wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.tar.gz tar -zxvf apache-maven-3.9.2-bin.tar.gz -C /usr/local/ && mv /usr/local/apache-maven-3.9.2/ /usr/local/maven
java源代码
package test; 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) { //Redis数据库连接地址 String host = 'xxxxxxxxxx.m.cnhz1.kvstore.aliyuncs.com'; //连接密码 String password = 'password'; int port = 6379; Jedis jedis = new Jedis(host, port); try { String authString = jedis.auth(password); if (!authString.equals('OK')) { System.err.println('AUTH Failed: ' + authString); return; } //Key(键) String key = '游戏名:奔跑吧,阿里!'; //清除可能的已有数据 jedis.del(key); //模拟生成若干个游戏玩家 List playerList = new ArrayList(); for (int i = 0; i
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(); } } }
执行结果 mvn clean package assembly:single -DskipTests java -classpath target/demo-0.0.1-SNAPSHOT.jar test.GameRankSample
**阿里云 Redis 主要适用于需要高速数据读写的应用场景,通常适用于以下几个场景: ** 会话缓存 Redis 可以作为会话缓存来存储用户登录信息、浏览历史等数据,以避免频繁地查询数据库。这种场景下,Redis 可以采用内存数据库方式,实现快速存储和读取数据,同时也可以设置数据过期时间,以保障数据的安全性。
计数器 Redis 支持对 key 的操作,因此可以将 Redis 用于计数器场景,例如统计网站的访问量、商品的点击量等数据。通过 Redis 提供的自增、自减等操作,可以快速地对数据进行累加和更新。
地理位置 Redis 支持地理位置的存储和查询,可以用于实现附近的人、地点推荐等功能。通过 Redis 的地理位置相关命令,可以快速地查询范围内的位置信息,并进行排序和排名。
消息队列 Redis 是一个支持 Pub/Sub 模型的消息队列系统,可以用于实现异步处理和分布式任务等场景。通过 Redis 的发布、订阅机制,可以实现不同服务之间的消息传递和通信。
缓存加速 Redis 可以作为后端服务的缓存加速,提升数据存储和访问的效率。例如将数据库中常用的数据缓存到 Redis 中,可以减少数据库的查询次数,从而提升性能。同时,通过 Redis 提供的持久化功能,也可以保证数据的安全性。
总之,阿里云 Redis 在实时性要求高、数据量大且需要频繁读写的场景下表现优异。在选择使用 Redis 时,需要充分考虑自身业务需求,并针对具体场景进行优化和配置,可以发挥 Redis 的最佳性能。
赞1
踩0