SpringBoot+Session+redis实现分布式登录

SpringBoot+Session+Redis实现分布式登录功能实现

文章目录

目录

文章目录

前言

一、引库

二、修改配置文件

三、使用

四、解决乱码问题

1.引库

2.配置redis序列化

3.配置Session-Redis序列化



前言

这里简单介绍一下,如果你想多台机器部署你的项目的话,在登录方面如果你用到了session的话,因为session中的登录信息是存放到内存中的,多机部署的话,假设你在A机器登录了,但是获取信息的时候查到了B机器,可是B机器根本就没有你的登录信息就会导致抛给用户,让用户重新登陆,可是如果有100台机器呢,意味着要登陆100遍吗,不合适,所以就需要把用户的登录信息存储下来,有什么方式吗?

  1. 使用Mysql数据库
  2. 使用Redis缓存

这里就考虑一个问题了,如果说登陆的用户信息太多的话,Mysql数据库会不会影响查询速度,也就是Qps,所以这个时候redis就可以完美的避开这种影响


一、引库

这里我用的springBoot版本是2.6.4,所以下面的两个库我选择了相同版本,如果你的项目用到了别的SpringBoot版本的话更换版本就可以

        <!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.6.4</version></dependency><!--session-redis--><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId><version>2.6.4</version></dependency>

二、修改配置文件

  # redis配置
spring:redis:port: 6379host: localhostdatabase: 0# session 失效时间(分钟)session:timeout: 86400store-type: redis

其实这里主要就是store-type设置成为redis就好

三、使用

 这样的话你登录之后用户信息就会存储到redis中了

但是此时就出来了一个问题,那就是乱码了,接下来解决它

四、解决乱码问题

1.引库

          <!--Jackson JSON--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency>

2.配置redis序列化

package com.yupi.xinggui.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory);// 使用StringRedisSerializer来序列化和反序列化redis的key值template.setKeySerializer(new StringRedisSerializer());// 使用GenericJackson2JsonRedisSerializer来序列化和反序列化redis的value值template.setValueSerializer(new GenericJackson2JsonRedisSerializer());template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());template.afterPropertiesSet();return template;}
}

3.配置Session-Redis序列化

package com.yupi.xinggui.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;@Configuration
@EnableRedisHttpSession
public class SessionConfig {/*** 配置Spring Session的默认Redis序列化器。* * 本方法旨在提供一个自定义的Redis序列化器,用于在Spring Session中序列化和反序列化会话数据。* 选择GenericJackson2JsonRedisSerializer是因为它支持将Java对象序列化为JSON格式,* 这样可以在Redis中存储更复杂的会话属性,而不仅仅是简单的字符串或数字。* * @return GenericJackson2JsonRedisSerializer 实例,用于序列化和反序列化会话数据。*/@Beanpublic RedisSerializer<Object> springSessionDefaultRedisSerializer() {return new GenericJackson2JsonRedisSerializer();}}

现在就可以看到用户信息了

 今日时间2024年7月20日,希望这篇博客可以帮助到你,愿你天天开心

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1486250.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

重大突破!OpenAI 推出 GPT-4o mini,AI 领域再掀波澜!

北京时间 7 月 18 日晚&#xff0c;OpenAI 重磅推出“小模型”GPT-4o mini&#xff0c;其在文本智能和多模态推理方面展现出卓越性能&#xff0c;超越 GPT-3.5 Turbo&#xff0c;在 LMSYS“聊天机器人对战”排行榜上也力压 GPT-4。 GPT-4o mini 支持 128K Token 的长上下文窗口…

一起学Java(1)-新建一个Gradle管理的Java项目

一时兴起&#xff0c;也为了便于跟大家同步学习进展和分享样例代码&#xff0c;遂决定创建一个全新的Java项目&#xff0c;并通过Github与大家分享。本文就是记录该项目的创建过程以及其中的一些知识要点&#xff08;如Gradle等&#xff09;。为了紧跟技术潮流和提高操作效率&a…

污染物CMAQ模型的安装

CMAQ安装教程(基于intel编译器) 简介 CMAQ&#xff08;Community Multiscale Air Quality&#xff09;系统是由美国国家环境保护局&#xff08;EPA, Environmental Protection Agency&#xff09;于1998年发布&#xff0c;是用于估算臭氧、颗粒物、有毒化合物和酸沉降等大气污…

第5讲:Sysmac Studio中的硬件拓扑

Sysmac Studio软件概述 一、创建项目 在打开的软件中选择新建工程 然后在工程属性中输入工程名称,作者,类型选择“标准工程”即可。 在选择设备处,类型选择“控制器”。 在版本处,可以在NJ控制器的硬件右侧标签处找到这样一个版本号。 我们今天用到的是1.40,所以在软…

DocRED数据集

DocRED数据集文件夹包含多个JSON文件&#xff0c;每个文件都有不同的用途。以下是这些文件的用途解释以及哪个文件是训练集&#xff1a; 文件解释 dev.json&#xff1a;包含开发集&#xff08;验证集&#xff09;的数据&#xff0c;通常用于模型调优和选择超参数。 label_map…

工业4.0与智能制造解决方案(149页PPT下载)

工业4.0&#xff0c;也被称为第四次工业革命&#xff0c;是一场将先进信息技术与制造业深度融合的全球性变革。这一概念起源于2011年德国提出的高科技战略项目&#xff0c;旨在通过利用物联网&#xff08;IoT&#xff09;、大数据、云计算、人工智能&#xff08;AI&#xff09;…

海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)

海康威视工业相机SDKPythonPyQt开发数据采集系统&#xff08;支持软件触发、编码器触发&#xff09; pythonpyqt开发海康相机数据采集系统 1 开发软件功能&#xff1a; 支持搜索相机&#xff1a;Gige相机设备和USB相机设备支持两种触发模式&#xff1a;软件触发和编码器触发支…

Python基础知识——(005)

文章目录 P21——20. 比较运算符 P22——21. 逻辑运算符 P23——22. 位运算和运算符的优先级 P24——23. 本章总结和章节习题 P21——20. 比较运算符 示例3-17—比较运算符的使用&#xff1a; P22——21. 逻辑运算符 示例3-18—逻辑运算符的使用&#xff1a; print(True and T…

群管机器人官网源码

一款非常好看的群管机器人html官网源码 搭建教程&#xff1a; 域名解析绑定 源码文件上传解压 访问域名即可 演示图片&#xff1a; 群管机器人官网源码下载&#xff1a;客户端下载 - 红客网络编程与渗透技术 原文链接&#xff1a; 群管机器人官网源码

Python设计模式:巧用元类创建单例模式!

✨ 内容&#xff1a; 今天我们来探讨一个高级且实用的Python概念——元类&#xff08;Metaclasses&#xff09;。元类是创建类的类&#xff0c;它们可以用来控制类的行为。通过本次练习&#xff0c;我们将学习如何使用元类来实现单例模式&#xff0c;确保某个类在整个程序中只…

如何使用大语言模型绘制专业图表

过去的一年里&#xff0c;我相信大部分人都已经看到了大语言模型(后文简称LLM)所具备的自然语言理解和文本生成的能力&#xff0c;还有很多人将其应用于日常工作中&#xff0c;比如文案写作、资料查询、代码生成……今天我要向大家介绍LLM的一种新使用方式——绘图。这里说的绘…

昇思25天学习打卡营第19天| Diffusion扩散模型

扩散模型&#xff0c;特别是Denoising Diffusion Probabilistic Models&#xff08;DDPM&#xff09;&#xff0c;是一种从纯噪声开始&#xff0c;通过逐步去噪生成数据样本的技术。它在图像、音频、视频生成上都取得了不错的成果&#xff0c;比如OpenAI的GLIDE和DALL-E 2。 扩…

three完全开源扩展案例04-阵列模型

https://www.threelab.cn/three-cesium-examples/public/index.html#/codeMirror?navigationThree.js%E6%A1%88%E4%BE%8B[r166]&classifybasic&id%E9%98%B5%E5%88%97%E6%A8%A1%E5%9E%8B 更多案例 import * as THREE from three; import { OrbitControls } from three…

组队学习——贝叶斯分类器(二)

引言 在组队学习——贝叶斯分类器&#xff08;一&#xff09;中布置了一个鸢尾花分类的任务&#xff0c;以下是关于它的代码详解&#xff1a; 要求对鸢尾花数据集进行分类&#xff0c;如何进行数据预处理&#xff08;提示&#xff1a;将分类数据转换成定量数据&#xff09; 第2…

从PyTorch官方的一篇教程说开去(3.3 - 贪心法)

您的进步和反馈是我最大的动力&#xff0c;小伙伴来个三连呗&#xff01;共勉。 贪心法&#xff0c;可能是大家在处理陌生问题时候&#xff0c;最容易想到的办法了吧&#xff1f; 还记得小时候&#xff0c;国足请了位洋教练发表了一句到现在还被当成段子的话&#xff1a;“如…

AGI 之 【Hugging Face】 的【从零训练Transformer模型】之二 [ 从零训练一个模型 ] 的简单整理

AGI 之 【Hugging Face】 的【从零训练Transformer模型】之二 [ 从零训练一个模型 ] 的简单整理 目录 AGI 之 【Hugging Face】 的【从零训练Transformer模型】之二 [ 从零训练一个模型 ] 的简单整理 一、简单介绍 二、Transformer 1、模型架构 2、应用场景 3、Hugging …

Python爬虫实战案例(爬取文字)

爬取豆瓣电影的数据 首先打开"豆瓣电影 Top 250"这个网页&#xff1a; 按F12&#xff0c;找到网络&#xff1b;向上拉动&#xff0c;找到名称栏中的第一个&#xff0c;单机打开&#xff1b;可以在标头里看到请求URL和请求方式&#xff0c;复制URL&#xff08;需要用…

【网络安全】CrowdStrike 的 Falcon Sensor 软件导致 Linux 内核崩溃

CrowdStrike的Falcon Sensor软件&#xff0c;上周导致大量Windows电脑出现蓝屏故障&#xff0c;现在还被发现Linux内核系统崩溃也与CrowdStrike有关。 六月份&#xff0c;Red Hat警告其客户在使用版本为5.14.0-427.13.1.el9_4.x86_64的内核启动后&#xff0c;由Falcon Sensor进…

PostgreSQL异常:An I/O error occurred while sending to the backend

在使用PostgreSQL数据库批量写入数据的时候&#xff0c;遇到了一个问题&#xff0c;异常内容如下&#xff1a; Cause: org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend.报错内容 报错提示1 Caused by: org.postgresql.util.PSQLExc…

go-kratos 学习笔记(3) google buf 管理proto

google buf 管理proto&#xff0c;以及从新归档文件的目录结构 什么是 BSR&#xff1f; BSR 将 Protobuf 文件作为版本化模块进行存储和管理&#xff0c;以便个人和组织可以轻松使用和发布他们的 API。 BSR 带有可浏览的 UI、依赖项管理、API 验证、版本控制、生成的文档以及…