spring boot集成redis实现共享存储session

spring boot集成redis实现共享存储session

redis实现共享存储session

  1. 首先下载redis,我下载的版本是5.0.14,目前官网貌似找不到5.x版本,可以自行去网上寻找。我这里的springboot版本是2.6.4
  2. 引入redis依赖
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.6.4</version>
</dependency>
  1. 引入 spring-session 和 redis 的整合
<!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
<dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId><version>2.6.3</version>
</dependency>
  1. 修改 spring-session 存储配置 spring.session.store-type
spring:session:timeout: 86400 #过期时间:24hstore-type: redis #存储类型redis

正常做完这些就可以实现共享存储session
但是我遇到一些问题:


自定义的Session存储库(SessionRepository)和@EnableRedisHttpSession注解冲突

配置好redis -session但是登录后,redis中并没有存储session

原因: 在之前解决跨域访问出现的Set-Cookie:SameSite=Lax 问题是,在网上引入了SessionConfig 配置类:

import org.springframework.boot.autoconfigure.session.DefaultCookieSerializerCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.MapSessionRepository;
import org.springframework.session.SessionRepository;
import org.springframework.session.config.annotation.web.http.EnableSpringHttpSession;
import org.springframework.session.web.http.DefaultCookieSerializer;import java.util.concurrent.ConcurrentHashMap;@Configuration
@EnableSpringHttpSession
public class SessionConfig {@Beanpublic SessionRepository sessionRepository() {return new MapSessionRepository(new ConcurrentHashMap<>());}@BeanDefaultCookieSerializerCustomizer cookieSerializerCustomizer() {return new DefaultCookieSerializerCustomizer() {@Overridepublic void customize(DefaultCookieSerializer cookieSerializer) {cookieSerializer.setSameSite("None");cookieSerializer.setUseSecureCookie(true);}};}
}

可以看到该配置类里面引用了@EnableSpringHttpSession注解,并且建了一个名为sessionRepository的Bean,其作用是为Spring应用程序配置一个自定义的Session存储库(SessionRepository)。

使用了MapSessionRepository,它是Spring Session提供的一种内存存储方式,用于将Session数据存储在JVM内存中。通过传入ConcurrentHashMap作为构造函数的参数,实际上是在内存中创建了一个并发安全的Map,用于存储Session对象。
通常情况下,默认情况下Spring Session会将Session存储在类似Redis、MongoDB等外部持久化存储中,但是通过这段代码,我们可以将Session存储在内存中,这对于某些特定场景(比如开发和测试)可能会很有用。

但是现在,我们已经在application.yml配置文件中配置存储类型是redis,这导致SessionConfig中的sessionRepository覆盖掉了配置文件中的配置,导致session并没有存储到redis中 。

同时,如果在application.yml配置文件中配置已经配置好了session,就不要使用@EnableSpringHttpSession注解,我添加以后出现了以下报错
在这里插入图片描述
意思是我定义了重复的bean,@EnableRedisHttpSession注解和application.yml文件中的session配置存在冲突,特别是在指定存储类型、超时时间等方面。两者的配置不一致或冲突,导致应用程序对Session的处理出现问题。

现在去掉sessionRepository方法和@EnableRedisHttpSession注解,在进行测试,session成功存储在redis中
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重拾C++之菜鸟刷算法第13篇---回溯算法

子集 知识点 子集问题中&#xff0c;不能包含重复子集&#xff0c;那么就需要startIndex来防止重复取值 题目 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任…

Android 设计模式观察者

Java观察者模式实现观察者模式的接口Observer和目标接口Subject,并实现了一个具体的目标类WeatherData。 同时,还实现了一个观察者类CurrentConditionsDisplay,它在目标类注册后,会在测量变化时接收到更新,并打印当前状况。最后在main函数中,我们创建了目标类的实例,并设…

十、软考-系统架构设计师笔记-软件架构演化和维护

1、软件架构演化 软件架构的演化和维护的目的是为了使软件能够适应环境的变化而进行的纠错性修改和完善性修改。软件架构的演化和维护过程是一个不断迭代的过程&#xff0c;通过演化和维护&#xff0c;软件架构逐步得到完善&#xff0c;以满足用户需求。软件架构的演化就是软件…

校园闲置物品交易网站 |基于springboot框架+ Mysql+Java+Tomcat的校园闲置物品交易网站设计与实现(可运行源码+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 用户功能模块 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen…

【NLP笔记】文本分词、清洗和标准化

文章目录 文本分词中文分词英文分词代码示例 文本清洗和标准化 文本分词 参考文章&#xff1a;​一文看懂NLP里的分词&#xff08;中英文分词区别3 大难点3 种典型方法&#xff09;; 文本分词处理NLP的基础&#xff0c;先通过对文本内容进行分词、文本与处理&#xff08;无用标…

Rocky Linux - Primavera P6 EPPM 安装及分享

引言 继上一期发布的Redhat Linux版环境发布之后&#xff0c;近日我又制作了基于Rocky Enterprise Linux 的P6虚拟机环境&#xff0c;同样里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机&#xff0c;请先与Oracle Primav…

Day48| 121 买卖股票的最佳时机 122 买卖股票的最佳时机II

目录 121 买卖股票的最佳时机 122 买卖股票的最佳时机II 121 买卖股票的最佳时机 class Solution { public:int maxProfit(vector<int>& prices) {int len prices.size();//dp[i] 表示当前的最大利润vector<vector<int>> dp(len, vector<int>…

算法学习(持续更新中)

时间复杂度 一个操作如果和样本的数据量没有关系&#xff0c;每次都是固定时间内完成的操作&#xff0c;叫做常数操作。 时间复杂度为一个算法流程中&#xff0c;常数操作数量的一个指标。常用O&#xff08;读作big O&#xff09;来表示。具体来说&#xff0c;先要对一个算法…

AI - 支持向量机算法

&#x1f9e8;概念 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种强大的机器学习算法&#xff0c;主要用于解决二分类问题。 SVM的核心思想是找到一个超平面&#xff0c;这个超平面能够最好地将数据分为两类&#xff0c;即在保证分类准确的情况下&am…

Hive SQL必刷练习题:同时在线人数问题(*****)

问题描述&#xff1a; 思路&#xff1a; ​ 因为有进直播间时间&#xff0c;和出直播间人数。所以我可以统计&#xff0c;进来一个是不是人数就会加1&#xff0c;出去一个&#xff0c;人数就会减1。 ​ 所以可以给进直播间的时间标记一个1&#xff0c;出直播间的时间标记一个…

【机器学习-02】矩阵基础运算---numpy操作

在机器学习-01中&#xff0c;我们介绍了关于机器学习的一般建模流程&#xff0c;并且在基本没有数学公式和代码的情况下&#xff0c;简单介绍了关于线性回归的一般实现形式。不过这只是在初学阶段、为了不增加基础概念理解难度所采取的方法&#xff0c;但所有的技术最终都是为了…

sparksql简介

什么是sparksql sparksql是一个用来处理结构话数据的spark模块&#xff0c;它允许开发者便捷地使用sql语句的方式来处理数据&#xff1b;它是用来处理大规模结构化数据的分布式计算引擎&#xff0c;其他分布式计算引擎比较火的还有hive&#xff0c;map-reduce方式。 sparksql…

GUROBI之数学启发式算法Matheuristics

参考运小筹的帖子&#xff1a;优化求解器 | Gurobi 数学启发式算法&#xff1a;参数类型与案例实现 - 知乎 (zhihu.com) 简言之&#xff0c;数学启发式是算法就是数学规划和启发式算法的融合&#xff0c;与元启发式算法相比&#xff0c;数学启发式算法具有更强的理论性。 在GUR…

python--模块导入+路径处理+常见异常类型

python--模块导入路径处理常见异常类型 模块导入import 模块名from 模块名 import 类、变量、函数from 模块名 import *from 项目名.包.py文件名称 import 类、变量、函数导包快捷键 os 模块 路径处理路径获取os.path.dirname(__file__)os.path.abspath(test.txt)os.getcwd() 路…

React低代码平台实战:构建高效、灵活的应用新范式

文章目录 每日一句正能量前言一、React与低代码平台的结合优势二、基于React的低代码平台开发挑战三、基于React的低代码平台开发实践后记好书推荐编辑推荐内容简介作者简介目录前言为什么要写这本书 读者对象如何阅读本书 赠书活动 每日一句正能量 人生之美&#xff0c;不在争…

AI论文速读 | TPLLM:基于预训练语言模型的交通预测框架

论文标题&#xff1a;TPLLM: A Traffic Prediction Framework Based on Pretrained Large Language Models 作者&#xff1a;Yilong Ren&#xff08;任毅龙&#xff09;, Yue Chen, Shuai Liu, Boyue Wang&#xff08;王博岳&#xff09;,Haiyang Yu&#xff08;于海洋&#x…

提高安全投资回报:威胁建模和OPEN FAIR™风险分析

对大多数人和企业来说&#xff0c;安全意味着一种成本。但重要的是如何获得适合的量&#xff0c;而不是越多越好。然而&#xff0c;你如何决定什么时候可以有足够的安全性&#xff0c;以及你如何获得它&#xff1f;则完全是另一回事。 该篇文章是由The Open Group安全论坛主办&…

爱奇艺 CTR 场景下的 GPU 推理性能优化

01 背景介绍 GPU 目前大量应用在了爱奇艺深度学习平台上。GPU 拥有成百上千个处理核心&#xff0c;能够并行的执行大量指令&#xff0c;非常适合用来做深度学习相关的计算。在 CV&#xff08;计算机视觉&#xff09;&#xff0c;NLP&#xff08;自然语言处理&#xff09;的模型…

基于SpringBoot SSM vue办公自动化系统

基于SpringBoot SSM vue办公自动化系统 系统功能 登录 个人中心 请假信息管理 考勤信息管理 出差信息管理 行政领导管理 代办事项管理 文档管理 公告信息管理 企业信息管理 会议室信息管理 资产设备管理 员工信息管理 开发环境和技术 开发语言&#xff1a;Java 使用框架: S…

ChatGLM3-6B独立部署提供HTTP服务failed to open nvrtc-builtins64_121.dll

背景 我在本地windoes部署ChatGLM3-bB&#xff0c;且希望部署后能提供HTTP server的能力。 模型部署且启动是成功了&#xff0c;但是在访问生成接口/v1/chat/completions时报错failed to open nvrtc-builtins64_121.dll。 问题详细描述 找不到nvrtc-builtins64_121.dll Runtime…