当前位置: 首页 > news >正文

太原网站建设公司排名怎么制作游戏小程序

太原网站建设公司排名,怎么制作游戏小程序,sem工资,山东手机网站建设更多SpringBoot3内容请关注我的专栏#xff1a;《SpringBoot3》 期待您的点赞#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成Redis#xff08;十三#xff09;之点排行榜实现 1. 为什么选择 Redis 来实现排行榜#xff1f;2. 项目环境准备2.1. 添加依赖2.2. 配置 Redis 连… 更多SpringBoot3内容请关注我的专栏《SpringBoot3》 期待您的点赞收藏⭐评论✍ 重学SpringBoot3-集成Redis十三之点排行榜实现 1. 为什么选择 Redis 来实现排行榜2. 项目环境准备2.1. 添加依赖2.2. 配置 Redis 连接 3. 排行榜功能实现3.1 排行榜服务的实现3.2 排行榜功能的 REST 接口3.3 测试接口 4. 关键代码解析5. 小结 在现代应用程序中排行榜功能常用于展示用户或内容的排名如游戏中的分数排名、社交平台上的活跃度排名等。Redis 提供的有序集合Sorted Set结构能够通过分数进行排序非常适合用来构建排行榜。本文将介绍如何使用 Spring Boot 3 和 Redis 实现一个简单的排行榜功能。 1. 为什么选择 Redis 来实现排行榜 Redis 的有序集合Sorted Set具备以下优点 高效排序有序集合是通过分数Score来进行排序的支持快速的插入、删除和排序操作。高性能Redis 是内存数据库读写速度非常快特别适合实时性要求高的应用。丰富的操作Redis 提供了多种操作命令如按分数范围查询、获取前 N 名等非常适合排行榜的需求。 Redis 有序集合通过 zadd 命令向集合中添加成员并为每个成员设置一个分数。通过 zrange 等命令可以按分数从小到大或从大到小获取成员的排名。 2. 项目环境准备 2.1. 添加依赖 首先在 pom.xml 中引入 Spring Boot 3 和 Redis 的相关依赖具体参考重学SpringBoot3-集成Redis一之基本使用 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId /dependency2.2. 配置 Redis 连接 在 application.yml 中配置 Redis spring:data:redis:host: localhostport: 6379 # Redis 端口password: redis123456 # 如果有密码可以在这里配置lettuce:pool:max-active: 100 # 最大并发连接数max-idle: 50 # 最大空闲连接数min-idle: 10 # 最小空闲连接数3. 排行榜功能实现 3.1 排行榜服务的实现 我们使用 Redis 的有序集合Sorted Set来存储排行榜的数据。成员用户或内容作为集合的元素得分如游戏分数、点赞数作为排序依据。 package com.coderjia.boot310redis.service;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service;import java.util.HashMap; import java.util.Map; import java.util.Set;/*** author CoderJia* create 2024/10/7 下午 09:13* Description**/ Service public class LeaderboardService {Autowiredprivate StringRedisTemplate redisTemplate;private static final String LEADERBOARD_KEY leaderboard;// 添加用户及其得分到排行榜public void addUserToLeaderboard(String userId, double score) {redisTemplate.opsForZSet().add(LEADERBOARD_KEY, userId, score);}// 获取前N名用户public SetString getTopUsers(int n) {return redisTemplate.opsForZSet().reverseRange(LEADERBOARD_KEY, 0, n - 1);}// 获取某个用户的排名public Long getUserRank(String userId) {return redisTemplate.opsForZSet().reverseRank(LEADERBOARD_KEY, userId);}// 获取某个用户的得分public Double getUserScore(String userId) {return redisTemplate.opsForZSet().score(LEADERBOARD_KEY, userId);}// 获取用户的排名和得分public MapString, Object getUserRankAndScore(String userId) {MapString, Object result new HashMap();result.put(rank, getUserRank(userId));result.put(score, getUserScore(userId));return result;} }3.2 排行榜功能的 REST 接口 为排行榜功能创建简单的 REST API用户可以通过该接口添加分数、查看前几名和用户排名等操作。 package com.coderjia.boot310redis.demos.web;import com.coderjia.boot310redis.service.LeaderboardService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;import java.util.Map; import java.util.Set;/*** author CoderJia* create 2024/10/10 下午 10:36* Description**/ RestController RequestMapping(/api/leaderboard) public class LeaderboardController {Autowiredprivate LeaderboardService leaderboardService;// 添加用户得分PostMapping(/add)public ResponseEntityString addUser(RequestParam(userId) String userId, RequestParam(score) double score) {leaderboardService.addUserToLeaderboard(userId, score);return ResponseEntity.ok(User added to leaderboard.);}// 获取前N名GetMapping(/top)public ResponseEntitySetString getTopUsers(RequestParam(topN) int topN) {return ResponseEntity.ok(leaderboardService.getTopUsers(topN));}// 获取某个用户的排名和得分GetMapping(/user/{userId})public ResponseEntityMapString, Object getUserRankAndScore(PathVariable String userId) {return ResponseEntity.ok(leaderboardService.getUserRankAndScore(userId));} }3.3 测试接口 你可以使用 Postman 或 curl 来测试这些接口。例如添加用户的接口请求可以这样发起 curl -X POST http://localhost:8080/api/leaderboard/add?userId1score100获取前 5 名的接口请求 curl -X GET http://localhost:8080/api/leaderboard/top?topN5获取某个用户的排名和得分 curl -X GET http://localhost:8080/api/leaderboard/user/14. 关键代码解析 redisTemplate.opsForZSet().add(key, value, score)将用户 ID 和分数作为一对数据添加到有序集合中key 为排行榜的键。redisTemplate.opsForZSet().reverseRange(key, start, end)根据分数从高到低获取排行榜前几名用户。redisTemplate.opsForZSet().reverseRank(key, value)获取用户的排名返回值是排名从 0 开始。redisTemplate.opsForZSet().score(key, value)获取用户的分数。 5. 小结 使用 Spring Boot 3 与 Redis 实现排行榜非常高效且简便。Redis 的有序集合为我们提供了强大的排序功能能够轻松处理各种排行榜需求。通过该方案我们可以实现以下功能 动态添加用户得分到排行榜实时获取前几名的用户查询用户的排名和分数 Redis 由于其快速的读写性能非常适合用于实时性要求高的排行榜应用场景。如果你需要开发类似的功能Redis 无疑是一个理想的选择。
http://www.w-s-a.com/news/126306/

相关文章:

  • 浙江省专业网站制作网站建设网站设计及内容策划
  • 浙江门户网站建设公司做网站上哪买空间
  • 郑州网站怎么推广贵阳市网站建设
  • 规范网站建设福州外贸网站建设推广
  • 平台电商网站开发传媒公司排行
  • 在哪给人做网站怎么样制作一个网页
  • 网站更改文章标题广西新闻
  • 专业做网站路桥寺院网站建设方案
  • 网站维护与优化教程广州做网站的网络公司排名
  • 网站做贷款许可证网站改版方案模板
  • 装饰公司怎么做网站嘉兴网站制作推广
  • 深圳兼职做网站涿州网站制作
  • 能找本地人做导游的网站app模板素材下载免费
  • 网站积分的作用网站开发需要看相关书籍
  • 建设银行总行网站alexa排名与什么有关系
  • 阿里云服务器发布网站收款网站怎么建设
  • 开发东莞网站制作公司做网站优化步骤
  • 网站版权信息的正确写法如何制作网络游戏
  • 郑州移动端网站建设如何在网上推广自己的公司
  • 企业建站源码系统破解网站后台
  • 石家庄网站开发报价企业注册资本代表什么
  • 招商平台公司宁波seo教程推广平台
  • 哪些网站可以做房产推广垂直门户网站都有什么
  • 不得不知道的网站金石项目管理软件
  • 怎么恢复网站数据库网站开发作业代做
  • 哪里建设网站最好用中国第五冶金建设公司医院网站
  • 雄安网建 网站建设订餐网站建设
  • 广州视频网站建站公司网站 体系
  • 青浦门户网站网站推广烟台公司电话
  • 湖北荆门建设银行网站wordpress购物模板下载