Redis 实战项目(一) -- 短信登录

短信登录

安装 redis

目标

  • 在 centos7 系统中安装和配置 redis 数据库,并使用 redis desktop manager 连接到 redis

步骤

  1. redis 是基于 c 语言编写的,首先需要安装 gcc 依赖
    • yum install -y gcc tcl
  2. 将 redis 安装包上传至虚拟机的 /usr/local/src 目录下并解压
    • 解压缩:tar -xzf redis-6.2.6.tar.gz
  3. 进入 redis 目录
    • cd redis-6.2.6
  4. 运行编译命令
    • make && make install
  5. 默认安装路径在 /usr/local/bin 目录下
  6. 测试 redis 能否正常启动
    • redis-server
  7. 配置 redis
    • 备份配置文件:cp redis.conf redis.conf.bck
    • 修改 redis.conf 文件中的配置
  8. 设置开机自启
    • 新建一个系统服务文件:vi /etc/systemd/system/redis.service
js 复制代码
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true 

[Install]
WantedBy=multi-user.target
  • 重载系统服务:systemctl daemon-reload
  • 开机自启:systemctl enable redis
  1. rdm 连接 redis
    • 关闭防火墙:systemctl stop firewalld
    • 正常连接即可

导入项目

导入 mysql 表

  • 在 idea 中执行资料中的 hmdp.sql 文件

导入后端项目

修改配置文件

  • 更改数据库的地址和用户名密码

部署前端项目

  • 地址:localhost:8080

基于 session 实现登录

发送短信验证码

  • controller 层
  • service 层
  • 校验手机号的正则表达式

短信验证码登录、注册

  • controller 层
  • service 层
  • mapper 层

校验登录状态

  • 编写拦截器代码
  • 注册拦截器、配置拦截路径
  • 查询登录状态

集群的 session 共享问题

  • 问题:
    • 多台 tomcat 并不共享 session 存储空间,当请求切换到不同 tomcat 服务时导致数据丢失的问题
  • session 替代方案应该满足
    1. 数据共享
    2. 内存存储
    3. key、value 结构
  • redis 集群!!!

基于 redis 实现 session 登录

修改代码
  1. 更新发送手机验证码的代码

    • @Reousrce 注解
    • 设置常量类提升代码规范性
    • 修改后代码
  2. 更新注册和登录功能代码

  • 更新 UserServiceImpl 中的 login 方法
  • 更新 LoginInterceptor 中的代码

登录拦截器的优化

  • 逻辑:
    • 使用两个优先级不同的拦截器
      1. 负责拦截所有请求并刷新 token 有效期
      2. 负责拦截需要登录的路径
  • token 刷新拦截器(不负责拦截)
  • 登录拦截器(负责拦截)
  • MvcConfig(配置优先级)
相关推荐
Deepincode6 小时前
Redis源码探究系列—跳表(skiplist)源码实现详解
redis
古城小栈7 小时前
从 cargo-whero 库中,找到提升 rust 的契机
开发语言·后端·rust
keep one's resolveY7 小时前
SpringBoot实现重试机制的四种方案
java·spring boot·后端
阿丰资源9 小时前
基于Spring Boot的电影城管理系统(直接运行)
java·spring boot·后端
IT_陈寒9 小时前
SpringBoot自动配置的坑差点让我加班到天亮
前端·人工智能·后端
虹科网络安全9 小时前
艾体宝产品|深度解读 Redis 8.4 新增功能:原子化 Slot 迁移(下)
数据库·redis·bootstrap
消失的旧时光-194310 小时前
Spring Boot 工程化进阶:统一返回 + 全局异常 + AOP 通用工具包
java·spring boot·后端·aop·自定义注解
追风筝的人er11 小时前
SpringBoot+Vue3 企业考勤如何处理法定假期?节假日方案、调休补班与工作日判断链路拆解
前端·vue.js·后端
金銀銅鐵12 小时前
[git] 如何丢弃对一个文件的改动?
git·后端
橘子海全栈攻城狮12 小时前
【最新源码】养老院系统管理A013
java·spring boot·后端·web安全·微信小程序