(秒杀项目) 4.6 分布式状态管理

一、安装整合redis

安装

使用redis对项目加缓存优化商品列表、商品详情的访问性能。
安装教程参考:阿里云 centos 7.6 安装和启动redis 6

整合
  1. 首先引入redis的依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. 在properties文件中配置redis连接的信息
# redis
spring.redis.database=0
spring.redis.host=121.40.235.71
spring.redis.port=6379
spring.redis.password=myredis123
  1. 自定义持久化方式
    默认的持久化方式是以二进制格式写入到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的原理八股文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值