SpringBoot整合Redis实现排行榜功能
前言:
我们在开发中时常会遇到排行榜的小功能开发,基本实现的思路,要不就是在数据库利用order by排序,要不就是查出数据后在代码里进行排序,再或者就是利用redis的进行排序,今天这篇文章就简单的介绍下如何利用redis进行排序。
正文:
一、快速搭建springboot项目
按着下面一步一步的操作,就可以把项目快速的搭建起来。
点击Finish完后,项目到这里基本就搭建好了。
然后建议把Maven改成自己的仓库,当然这一步操不操作都可以。
然后这里我设置端口为8085,因为默认的端口8080与我本地其他的程序冲突了。
二、配置文件
pom的依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><!-- 集合工具类 --><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.2</version></dependency><!-- json --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency>
application.yml的配置
server.port=8085
#配置Redis,redis的host是虚拟机服务器上的IP地址,端口6379
spring.redis.host=127.0.0.1
spring.redis.port=6379
三、新建一个controller,看看项目是否可以正常访问
项目运行起来过后再浏览器的地址栏输入http://localhost:8085/hello,效果如下
到这里说明项目搭建成功了,然后开始利用redis实现排名。
四、redis实现排行榜的代码
User类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String name;private String sno;private double score;
}
controller层
@RestController
public class RedisController {@Autowiredprivate RedisTemplate<String,String> redisTemplate;@Autowiredprivate UserService userService;public static final String SCORE_RANK = "score_rank";@GetMapping("/hello")public String hello(){Set<ZSetOperations.TypedTuple<String>> tuples = new HashSet<>();List<User> users = userService.selectUserListAll();if(CollectionUtils.isNotEmpty(users)){for (User user:users) {DefaultTypedTuple<String> tuple = new DefaultTypedTuple<>(user.getName(), user.getScore());tuples.add(tuple);}}Long num = redisTemplate.opsForZSet().add(SCORE_RANK, tuples);Set<ZSetOperations.TypedTuple<String>> rangeWithScores = redisTemplate.opsForZSet().reverseRangeWithScores(SCORE_RANK, 0, 10);System.out.println("获取到的排行和分数列表:" + JSON.toJSONString(rangeWithScores));return JSON.toJSONString(rangeWithScores);}
}
service层
public interface UserService {List<User> selectUserListAll();
}
serviceimpl层
@Service
public class UserServiceImpl implements UserService {@Overridepublic List<User> selectUserListAll() {List<User> users = new ArrayList<>();User user1 = new User("阿达","1",88);User user2 = new User("阿港","2",90);User user3 = new User("阿硕","3",60);User user4 = new User("阿涂","4",78);User user5 = new User("阿俊","5",78);users.add(user1);users.add(user2);users.add(user3);users.add(user4);users.add(user5);return users;}
}
包的结构:
五、再次访问接口http://localhost:8085/hello,查看排序后的数据
注意:application.yml里的redis的配置,不是只要配置一下就行,这个要根据你真实连接redis的ip和端口设置。
server.port=8085
#配置Redis,redis的host是虚拟机服务器上的IP地址,端口6379
spring.redis.host=127.0.0.1
spring.redis.port=6379
总结:
就分享最近摘抄的一句话吧,一番风顺的叫活着,十有八九不如意的才是生活。啥叫硬汉,就是认清了生活的真相,还依然爱着它!哪怕再扯再累!莫怂,怂要是有用的话,我早就怂了。
希望今年大家可以比上一年的自己有所进步!
我是阿达,一名喜欢分享知识的程序员,时不时的也会荒腔走板的聊一聊电影、电视剧、音乐、漫画,这里已经有16522位小伙伴在等你们啦,感兴趣的就赶紧来点击关注我把,哪里有不明白或有不同观点的地方欢迎留言!
SpringBoot整合Redis实现排行榜功能相关推荐
- SpringBoot整合Redis实现购物车功能
目录 项目介绍 开发配置 开发流程 购物车业务流程 开发流程 1.项目结构 2.数据层(DAO) 3.数据层(POJO.VO) 4.Redis配置层 5.服务层(Service) 6.控制层(Cont ...
- SpringBoot整合Redis 之 StringRedisTemplate、RedisTemplate 基础
SpringBoot 整合 Redis 环境准备 引入依赖 配置文件 StringRedisTemplate 基本使用 Key 常用操作 String 常用操作 List 常用操作 Set 常用操作 ...
- SpringBoot整合Redis缓存
SpringBoot整合Redis缓存 一.缓存概念知识 1.是什么缓存 2.缓存的优缺点 3.为什么使用缓存 二.Redis概念知识 1.Redis简介 2.为什么用Redis作为缓存 3.Redi ...
- Springboot整合redis(lettuce)
springboot 整合redis(lettuce) 首先确保电脑上装了redis.最好能用redisDesktop查看一下数据情况 redis是一款非常流行的Nosql数据库.redis的功能非常 ...
- springboot整合redis,推荐整合和使用案例(2021版)
背景:手下新人在初次使用springboot整合redis,大部分人习惯从网上检索到一份配置,然后不知其所以然的复制粘贴到项目中,网上搜索到的配置良莠不齐但又万变不离其宗.由于springboot最大 ...
- springboot整合redis实现分布式锁思想
思路 所有响应获取锁的线程都先尝试往redis中创建一个缓存数据,所有线程的key必须相同.使用的是redis的setnx命令.就只有一个线程能够创建成功,创建成功的线程就成功获取锁. 没有获取锁的线 ...
- SpringBoot整合Redis - @Cacheable 和 RedisTemplate
对之前网站做了一些很简单的优化,给用户列表加了一个分页功能. 分页就更好考虑加载速度,如果换一页就要等几秒,那体验感是非常差的. 因此想到了加一个redis缓存. springboot整合redis有 ...
- springboot整合redis案例——点赞取消点赞
目录 springboot与缓存 JSR-107 Spring缓存抽象 重要概念和缓存注解 springboot整合redis 案例一:Redis是实现点赞.取消点赞 一.Redis 缓存设计及实现 ...
- SpringBoot整合redis实现发布订阅模式
Redis的发布订阅模式 发布订阅(Pub/Sub):目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接 ...
- 商城项目(二)整合Redis实现缓存功能
整合Redis实现缓存功能 环境搭建 Redis 版本:5.0.4 SpringBoot整合Redis 添加项目依赖 <!--redis依赖配置--> <dependency> ...
最新文章
- @apioperation 作用_石莲子的功效与作用分享
- 注意!你的 Navicat 可能被投毒了...
- 空间计量模型_Stata中的空间计量回归模型应用
- 独家 | 手把手教你推导决策树算法
- shell脚本批量追踪ip路由走向
- cherry-pick,revert和rebase使用的3-way合并策略
- cpu核心数的线程数
- git 重新关联远程仓库地址
- 一步步把SAP GUI的事务码配置到SAP Fiori Launchpad里
- Maven父子结构的项目依赖使用以及打包依赖_微服务项目(maven父子级项目)怎么打包
- 适合本科生的AI比赛目录
- 炒股应只做确定的上涨
- php 表单验证代码,php 表单验证实现代码
- MySQL数据类型详解
- FTP客户端搭建(linux环境)
- kafka集群搭建超详细教程
- 《软件工程之美》打卡第四周,2021最新Android面试真题解析
- Day10安卓 专高 day10 ContentProvider内容提供者
- regedit.msc
- 服务器故障英文邮件,全球邮
热门文章
- 如何查找office安装路径
- 两部苹果手机同步照片_如何将旧苹果手机音乐里面的歌曲同步到新苹果手机上...
- JavaScript中的eval函数
- 笔记本 安装服务器系统,笔记本电脑安装Windows Server 2016之我见
- 纽约大学Gary Marcus等撰文:人类思维对于AI的11个启示
- 高效c语言拧魔方算法,3阶魔方阵的算法
- CreateFile函数详解 不仅仅是对文件的操作 还有对系统设备的IO的操作
- 九爷带你玩转 oracle
- C语言每日一练——第12天:求一个矩阵的转置
- rap技术原理_学rap最基本的都要学什么