一、安装整合redis
安装
使用redis对项目加缓存优化商品列表、商品详情的访问性能。
安装教程参考:阿里云 centos 7.6 安装和启动redis 6
整合
- 首先引入redis的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 在properties文件中配置redis连接的信息
# redis
spring.redis.database=0
spring.redis.host=121.40.235.71
spring.redis.port=6379
spring.redis.password=myredis123
- 自定义持久化方式
默认的持久化方式是以二进制格式写入到redis中的,这不方便开发人员开发过程中进行阅读,所以我们要自定义持久化的方式。
默认的持久化方式
在配置类中自己写一个持久化方式覆盖默认的
4. 测试
测试时需要开放6379端口
测试成功到这里redis就整合完成了。
二、使用redis进行状态管理
在之前的注册和登录都是使用session进行状态管理的、单机架构下使用session是没有什么问题的、但在分布式系统、或者多端比如安卓端使拥session是行不通的、因为android使用的不是http协议、没有session域session是不能跨域的、这样的话使用session进行登录状态就不行了。所以我们可以使用redis来实现单点登录、把登录成功的用户存一个token字符串到redis其他不同站点的应用去同一个reids中找有没有这个用户的token有就表示已登录、没有就表示未登陆、这样就实现了单点登录。
1. 注册模块的优化
之前的注册模块是将验证码存到session中这样假设同时有上百千万的人高并发情况下使用session读性能会很差。这时候我们可以使用redis缓存验证码、并且设置过期时间,这样的话既提高访问效率又节约了session内存空间。
通过代码可知、想redis存了电话号码为键、验证码为值的字符串数据,并设置了过期时间为5分钟。
2. 登录状态管理优化
登录处理器
由代码可知先生成一个token作为键、以查出来的user对象作为值保存到redis中。
登出处理器
登出只要清除token就可以了。
登录拦截器
和以前判断session有没有对应的user差不多、这里是判断redis中有没有token、有就表示已登录、没有就表示未登录需要登录,拦截的接口依然是下单操作的接口。
自此到这里使用token存入redis中维护登录状态的升级就完成了。
三、总结
本节使用redis+token对登录状态的管理进行了升级、面试时要清楚实现流程、还有熟悉下redis的原理八股文。