一、安装整合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的原理八股文。

(秒杀项目) 4.6 分布式状态管理相关推荐

  1. 在vue项目中引用vuex状态管理工具

    在vue项目中引用vuex状态管理工具 一.vuex是什么? 二.使用步骤 1.引入库 2.在main.js文件引入配置 3.配置store/index.js文件 4.获取state数据 5.获取ge ...

  2. Vue项目 成员管理系统 Vuex状态管理(10)

    Vuex是一个专为Vue.js应用程序开发的状态管理模式.它采用集中式储存管理应用的所有组件的转台并以相应的规则保证装填以一中可预测的方式发生变化. Vuex可以将组件中的某些属性.值或者方法拿出来统 ...

  3. Flutter项目该如何选择状态管理?

    状态管理原则 我们在开发过程中,为了提高项目的可维护度和性能,也为了让页面UI跟数据(本地或服务端数据)有效分离的同时又能有效同步,都会让项目保持清晰的目录结构.同时启用状态管理库. 而MVVM模式已 ...

  4. 微信小程序项目重构之Redux状态管理

    1.以往处理状态的一些方式 第一种:App上挂globalData 这种方式就是直接写在App里面啦,取值赋值比较方便 App.js App({globalData: {name: '前端学者',// ...

  5. 秒杀项目(前后端分离)

    1P/11P项目开篇 技术点总结 1.安装开发工具 2P/11p 项目架构介绍 常见的请求:返回前端页面HTML:Model+HTML模板 ajax异步请求:返回json数据[返回特定格式的字符串只返 ...

  6. 状态管理 界面数据信息

    为什么写状态管理? 对于Activity,Fragment里面的数据 做一个统一的管理,处理 实现方法 1.新增一个BaseState的状态管理器,复杂的界面新加一个状态管理,用于管理当前界面的数据处 ...

  7. .NET 6 Preview5+VS2022实战千万并发秒杀项目,帅爆了(附源码)

    Microsoft 宣布了Visual Studio 2022 的第一个预览版,并且同时也发布了.NET 6 Preview 5.具有里程碑意义的Visual Studio 2022 Preview ...

  8. vue2项目复习01-关闭elint检校,src文件别名,路由传参的对象写法,代理解决跨域问题,nprogress,vuex状态管理库,store的模块式开发,节流与防抖,编程式导航+事件委托路由跳转

    1.关闭elint语法校验 创建vue.config.js //关闭elint语法校验 {lintOnSave:false; } 2.src文件夹配置别名 jsconfig.json配置别名 @代表s ...

  9. onmounted vue3_基于项目时间阐述vue3.0新型状态管理和逻辑复用方式

    作者:Mingle 转发链接:https://mp.weixin.qq.com/s/iOq-eeyToDXJ6lvwnC12DQ 前言 背景:2019年2月6号,React 发布 「16.8.0」 版 ...

  10. 创建vue项目(三)路由跳转、反向代理、本地存储、状态管理

    数据更新渲染,axios请求数据,配置环境 一.路由跳转 app.vue <template><div id="app"><keep-alive> ...

最新文章

  1. python基础主要内容_python基础—python的介绍
  2. java中怎么制作单选框_java代码swing编程 制作一个单选按钮的Frame
  3. Web端H.265播放器研发解密
  4. 扫地机器人什么牌子好?2021最新扫地机器人排行榜
  5. OEA 中 WPF 树型表格虚拟化设计方案
  6. 算法题存档20190304
  7. 江苏大学c语言程序设计,江苏大学201级C语言课程设计要求及题目.doc
  8. 一个很小的 截图 库。 只需要依赖 jQuery
  9. 轻量级过程改进之项目启动
  10. 未知usb设备设备描述符请求失败怎么解决
  11. 我的ThinkPad T410i 安装 Mac10.9 Mavericks 过程记录
  12. 后门程序技术知识全面深解
  13. AJPFX平台:01.14日内交易策略
  14. 互联网巨头在2018年竞争的主战场 这个技术的新风口已到
  15. Echart 画图表
  16. java http心跳_MQTT协议笔记之连接和心跳
  17. paddlepaddle 27 支持任意维度数据的梯度平衡机制GHM Loss的实现(支持ignore_index、class_weight,支持反向传播训练,支持多分类)
  18. JSON的格式及Gson 与 FastJson使用
  19. 无需额外相机配件,在你的手机上利用佳能的Camera Connect APP实现延时摄影
  20. 晨曦记账本如何添加、登录账本以及取回密码

热门文章

  1. Windows下用C语言连接Mysql注意问题
  2. 线程控制之线程和信号
  3. 6.性能之巅 洞悉系统、企业与云计算 --- CPU
  4. 11.go 环境变量
  5. 8.Linux/Unix 系统编程手册(上) -- 用户和组
  6. 1.卷1(套接字联网API)---简介
  7. 47.使用外部 JavaScript 和 CSS(8)
  8. Selenium WebDriver 与 iOS 自动化测试 (做了一些初步的工具对比)
  9. ReactNative中iOS和Android的style分开设置教程
  10. Understanding Unix/Linux Programming-事件驱动编程:编写一个视频游戏