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(配置优先级)
相关推荐
程序猿DD4 小时前
OctaFuse Gateway 2.15.0:MCP 聚合、向量 Embeddings 与官方目录同步
后端·agent
余槐i6 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
需要8267 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
骇客野人7 小时前
在麒麟操作系统上 分别安装 jdk1.8, 达梦数据库,redis ,memcache 的操作实施方案和步骤
数据库·redis·memcached
凤山老林8 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
伯恩bourne9 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
张彦峰ZYF9 小时前
停顿短不等于延迟低:G1、ZGC 与低延迟服务的目标分野、代价账本与选型标定
后端·回收暂停、应用停止总时长·到达安全点、分配停滞·屏障吃吞吐、并发线程吃核心·并发窗口吃堆余量·分区式靠挑回收集兑现目标·染色指针式不支持压缩引用
pride.li10 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
upala10 小时前
【仓颉语言入门 · 第二篇 第 6 课】
后端
罗丹丹Luna10 小时前
移动端显示“已提交”以后:SAP 与低代码集成该怎样暴露真实状态
后端·架构