Redis代替session实现登录业务

1.使用session实现登录的问题

每个服务器中都有一份属于自己的session,这会导致多台服务器情况下的数据不统一。

使用session拷贝会出现两大问题:

1、每台服务器中都有完整的一份session数据,服务器压力过大。

2、session拷贝数据时,可能会出现延迟

2.redis代替session

原理:

redis数据本身便是共享可以解决掉session共享问题,且可以利用threadLocal的特性,将用户重要数据以token为key存入redis中,自定义拦截器将请求拦截校验redis中是否有用户数据,如果有,将用户数据存入当前线程中。

代码片段如下:

1.获取验证码
2.登录验证
3.定义拦截器

第一层拦截器:拦截所有请求,用于判断且存入用户信息。

第二层拦截器:用于拦截需要具有用户信息的请求.

拦截器注册

3.总结:

1.用户登录时,通过生成的token为key存入redis中,并将token返回给前端。

2.第一层拦截器:验证前端的请求头是否有token,如果有,通过token拿到redis中的用户信息,并存入ThreadLocal中。

3.第二层拦截器:验证ThreadLocal中是否具有用户信息,来验证是否用户登录。

相关推荐
吃饱了得干活13 分钟前
限界上下文之后:微服务怎么拆、上下文怎么聊?
java·后端·架构
yngsqq34 分钟前
窗体快速取消
java·开发语言
岁月如歌778640 分钟前
一次讲透 Redis 缓存击穿、穿透、雪崩,从原理到实战解决方案
java·后端·架构
小的~~1 小时前
面试被问懵了?为什么 Redis 单线程还能保证 Lua 脚本原子性,却偏偏选了 Lua?
redis·面试·lua
AI多Agent协作实战派1 小时前
AI多Agent协作系统实战(四十六):改了十次规则,AI员工还是老样子——会话缓存的坑
java·spring·缓存
一知半解仙2 小时前
当机器人学会泛化,而我在写Java:一名后端开发者的2026年8月21日观察手记
java·开发语言·机器人
葡萄成熟时 !10 小时前
JAVA 常用API学习笔记
java·笔记·学习
Rain的Java大神之路11 小时前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
吴声子夜歌12 小时前
Java面试题——基础(一)
java·开发语言
南城以南溫暖如初14712 小时前
外卖CPS实战指南:从技术选型到运营落地全流程解析
java·spring boot·mysql·架构·vue