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(配置优先级)
相关推荐
小翰子_13 分钟前
Spring Boot整合Sharding-JDBC实现日志表按月按周分表实战
java·spring boot·后端
踏浪无痕1 小时前
SQLInsight:从JDBC底层到API调用的零侵入SQL监控方案
数据库·后端·开源
superman超哥2 小时前
Rust HashSet与BTreeSet的实现细节:集合类型的底层逻辑
开发语言·后端·rust·编程语言·rust hashset·rust btreeset·集合类型
superman超哥3 小时前
Rust String与&str的内部实现差异:所有权与借用的典型案例
开发语言·后端·rust·rust string·string与str·内部实现·所有权与借用
愈努力俞幸运3 小时前
rust安装
开发语言·后端·rust
踏浪无痕3 小时前
JobFlow 负载感知调度:把任务分给最闲的机器
后端·架构·开源
UrbanJazzerati3 小时前
Python自动化统计工具实战:Python批量分析Salesforce DML操作与错误处理
后端·面试
我爱娃哈哈3 小时前
SpringBoot + Seata + Nacos:分布式事务落地实战,订单-库存一致性全解析
spring boot·分布式·后端
DemonAvenger4 小时前
Redis慢查询分析与优化:性能瓶颈排查实战指南
数据库·redis·性能优化
Li_yizYa4 小时前
Redis-常见数据类型及应用场景
java·数据库·redis