spring session搭配redis的简单使用

spring-session-data-redis核心原理 本文介绍了分布式Session的实现原理及配置方法。Session通过在服务器端保存用户登录信息,使用sessionId进行鉴权。在微服务架构中,通过Redis实现分布式Session共享。核心配置使用@EnableRedisHttpSession注解,可设置过期时间、命名空间等参数。RedisHttpSessionConfiguration类负责读取配置并创建RedisIndexedSessionRepository来管理Session操作。通过引入相关依赖和配置,可实现跨服务的Session共享,解决分 阅读详情

当我们访问 http://localhost:8858/session/get这样一个本地接口时,会通过该地址访问到tooncat服务器,然后服务器会判断发送请求的客户端是否建立过session会话,如果没有则重新建立一个session会话,如果有则继续使用该session会话。如何理解呢?就好比你在电话亭使用一块钱打电话,限时10分钟,然后我们通过电话号码(对应我们的接口访问地址)找到对方,当对方接听时开始有效计时,自此两者就建立一条通话连接(对应web服务器中的session会话)我们在有效期内可以随时进行信息交流。

开始使用,引入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--实现Redis的自动化配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <!--排除lettuce连接池,lettuce会经常出现莫名错误,稳定性也不如jedis-->
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 引入 Jedis 的依赖,这样 Spring Boot可以实现对 Jedis 的自动化配置 -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
        <!--实现Spring Session对Redis的自动化配置-->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

添加相关配置

# 应用名称
spring:
  application:
    name: spring-session-redis
  # 对应 RedisProperties 类
  redis:
    host: localhost
    port: 6379
    password: 479368      # Redis 服务器密码,默认为空。生产中,一定要设置 Redis 密码!
    database: 0           # Redis 数据库号,默认为 0
    timeout: 15000        # Redis 连接超时时间,单位:毫秒。
    # 对应 RedisProperties.Jedis 内部类
    jedis:
      pool:
        max-active: 8     # 连接池最大连接数,默认为 8 。使用负数表示没有限制    同一时间最大只能执行8条sql语句,每执行一条语句就会和数据库建立一个连接
        max-idle: 8       # 默认连接数最大空闲的连接数,默认为 8 。使用负数表示没有限制。
        min-idle: 0       # 默认连接池最小空闲的连接数,默认为 0 。允许设置 0 和 正数。
        max-wait: -1      # 连接池最大阻塞等待时间,单位:毫秒。默认为 -1 ,表示不限制。    执行语句到数据库响应数据的时间

server:
  port: 8858

配置redis序列化,java默认使用jdk自带的序列化配置,可读性很差,我们进行替换

@Configuration
@EnableRedisHttpSession         //自动化配置Spring Session使用Redis作为数据源
public class SessionConfig {

    //默认情况下,Java采用自带的序列化方式 ,可读性很差,所以进行替换。
    @Bean
    public StringRedisSerializer stringRedisSerializer(){
        return StringRedisSerializer.UTF_8;
    }
}

新建一个SessionController接口测试类

@RestController
@RequestMapping("/session")
public class SessionController {


    //HttpSession相当于会话通道,进行信息交流
    @GetMapping("/set")
    public void set(HttpSession session,
                    @RequestParam("key") String key,
                    @RequestParam("value") Object value){
       session.setAttribute(key,value);
    }

    @GetMapping("/get")
    public Map<String,Object> getAll(HttpSession session){
        Map<String, Object> map = new HashMap<>();
        Enumeration<String> enumeration = session.getAttributeNames();
        while(enumeration.hasMoreElements()){
            String key = enumeration.nextElement();
            Object value = session.getAttribute(key);
            map.put(key,value);
        }
        return map;
    }
}

最后启动应用,先查询redis确定访问前情况,可以看到什么都没有

访问lhttp://localhost:8858/session/get,再查看redis,可以看到多了一条数据,这就是session

 

 最后安利我使用的redis客户端连接软件----QuickRedis这是一款免费开源好用的redis连接工具

下载地址:QuickRedis下载地址

使用Spring Session redis进行Session共享 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。 session的处理有很多种方法,详情见转载的上篇博客:集群/分布式环境下5种session处理策略 在这里我们讨论其中的第三种方法:session共享。 redis集群做主从复制,利用redis数据库的最终一致性,将session信息存入redis中。当应用服务器发现session不在本机内存的 阅读详情

相关推荐

实战——session共享(Spring Boot + Spring Session + Redis)

Spring Boot + Spring Session + Redis 进行session共享,nginx进行反向代理

jiangchenzhou的博客 6255

分布式Session(Spring-session-data-redis)

1、在pom中添加如下依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency>

Emm_Sona的博客 3719

深入学习 Redis - 基于 Spring Data Redis 操作 Redis

RedisTemplate 是把 Redis 的方法,分成了几个类别来进行组织,和原生的 Redis 命令有一定的差异~ 作者的初心是希望通过上述封装,让接口看起来更简单,但在我看来,并没有达成,反而因为与 Redis 原生命令差异,提高了使用者的学习成本.之前使用 Jedis 是通过 Jedis 对象里的各种方法来操作 redis 的,此处 Spring 则是通过 SpringRedisTemplate 来操作 redis.

CYK_byte的博客 2547

SpringBoot 全家桶 | SpringSession + Redis实现会话共享

官方介绍 Spring Session 提供了一个 API 和实现,用于管理用户的会话信息,同时使其在不依赖于特定于应用程序容器的解决方案的情况下,可以轻松地支持集群会话。它还提供了透明的集成: HttpSession 允许以中立的方式替换应用程序容器(即 Tomcat)中的HttpSession,并支持在 Headers 中提供会话 ID 以与 RESTful API 一起使用。 WebSocket 能够在接收 WebSocket 消息时使HttpSession保持活动状态 WebSession 允许以

人生就是一个不断学习的过程 3255

Spring Session入门与Redis整合实战教程

在现代Java Web应用中,传统的基于Servlet容器的Session管理方式在单体架构下表现良好,但在分布式系统中面临诸多挑战,如Session复制成本高、数据不一致等问题。Spring Session应运而生,旨在提供一种统一、可扩展的会话管理解决方案。其核心思想是通过将Session数据从本地内存中抽离出来,统一存储于如Redis这样的分布式缓存中,从而实现跨服务实例的Session共享。其底层基于Filter链拦截HTTP请求,替换原生的。

weixin_29781865的博客 1126

海康VisionMaster图形定位实战:十字形Mark点精准匹配技巧

本文深入解析了海康VisionMaster图形定位模块在工业自动化中实现十字形Mark点精准匹配的实战技巧。文章从ROI设置、核心参数调优(如定位方式、尺度模式、对比度阈值)到工业场景应用与避坑指南,系统性地分享了提升匹配成功率和稳定性的关键步骤,帮助工程师应对复杂现场环境,实现高效、可靠的视觉定位。

weixin_29285605的博客 258

Spring之RedisSession详解

Spring redisSession

weixin_42132854的博客 5995

【完美解决】Anaconda3安装后缺失大量文件,没有scripts、Library等目录

Anaconda3是官网下载的:https://www.anaconda.com/distribution/#download-section 我选择的是64位python 3.7的版本。 问题出现及现象: 我自己选择了一个D盘的目录D:\Tools\Anaconda3进行安装,装完后发现conda list命令无法执行,首先都到的是配置环境变量,然后发现安装目录下缺失大量文件(如下图)...

android之行 3万+

spring session、spring security和redis整合的简单使用

通过user进行登录,再次查看redis,我们可以发现先前的sessionId改变了,同时还多出了一条数据"spring:session:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME:user",这条数据就是我们刚登陆的user。点击Log Out退出登录,然后再出查看redis,我们会发现之间的增加的那条用户数据不见了。访问SessionController中的。

egekm_sefg的博客 578

RTAB-MAP实战:用Realsense D435i在ROS中搭建室内3D地图(附避坑指南)

本文详细介绍了如何在ROS环境下,使用Intel Realsense D435i深度相机和RTAB-MAP算法进行室内3D地图构建的完整实战流程。内容涵盖环境配置、核心节点数据流解析、关键参数调优、地图保存与重定位,并提供了实用的避坑指南,帮助机器人开发者和研究者快速实现稳定的视觉SLAM应用。

weixin_29095049的博客 489

基于Apache SeaTunnel构建CDC数据同步管道

Apache SeaTunnel是一个数据集成开发平台,其发展经历了几个重要阶段:ETL时代(90年代):面向结构化数据库的数据同步,用于构建数据仓库。MPP和分布式技术流行:使用技术如Hive进行数据仓库的构建。此阶段主要使用mapreduce程序进行数据搬运和转换。数据湖技术流行:重视数据集成,强调先同步数据至数据湖仓储,再进行业务面向的转换和设计。CDC,即变更数据捕获,是一种捕获数据库变更事件(如插入、更新、删除)的技术。

weixin_54625990的博客 2172

spring session实现集群中session共享

本文转自:http://dorole.com/1422/ 使用框架的会话管理工具,也就是本文要说的spring-session,可以理解是替换了Servlet那一套会话管理,既不依赖容器,又不需要改动代码,并且是用了spring-data-redis那一套连接池,可以说是最完美的解决方案。当然,前提是项目要使用Spring Framework才行。   这里简单记录下整合的过程:   如果项目之前...

weixin_33889665的博客 161

从一只龙虾到一支团队:OpenClaw 单 Bot 多 Agent 配置实践

单 Bot 多 Agent只有一个对外的聊天入口(飞书 Bot)内部有多个独立的 AI Agent,各司其职主 Agent(总指挥)负责接收任务并分配给子 Agent子 Agent 完成任务后将结果返回给主 Agent角色Agent ID职责使用场景🎯 总指挥main-agent统筹协调,任务分发接收所有用户请求✍️ 笔杆子内容创作公众号、博客、小红书🔬 参谋canmou深度研究竞品分析、市场调研📋 运营官operations运营管理邮件、日历、社交媒体。

Maynor的博客 1078

使用Spring Session Redis 共享Session 后如何监听Session的sessionDestroyed事件

https://bbs.youkuaiyun.com/topics/391967054?page=1核心代码:RedisHttpSessionConfiguration-》RedisOperationsSessionRepository-》onMessage这里就可以很清楚看到SessionListener是如何起作用的。然后可以添加其他监听###########################SpringM...

viaco2love的博客 8171

BevFusion (5):逐行代码详解

论文中给出了Bevfusion的架构图,它的输入是多视角的相机和点云图,经过两个特定的head,分别用于做检测任务和分割任务。图1 Bevfusion 结构图Bevfusion因为有两个模态的输入:多视角相机和点云,所以对应两个分支:相机分支和点云分支。相机分支:输入6个视角的图片后,提取特征,然后经VT(View Transformer)转换之后得到相机的Bev特征。激光雷达分支:输入点云数据,经过Encoder编码得到体素化Lidar特征,然后沿z方向展平,得到Lidar Bev特征。

@bangbang的博客 3714

详解Linux下使用vscode编译运行和调试C/C++

本教程将具体详解使用Visual Studio Code在Linux环境下使用C/C++方法。 GCC C++ 编译器 (g++) 和 GDB 调试器的方法。 GCC是GNU 编译器集合; GDB 是 GNU 调试器。 1.先决条件 安装Visual Studio Code. 安装C++拓展插件。点击在vscode界面最左侧的Extensions图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击进行安装。 确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下命令

休的博客 6240

使用spring-session-data-redis实现HTTP Session集中管理原理

在使用spring-session-data-redis时只需要在@Configuration类上加上@EnableSpringHttpSession即可实现使用Redis集中存储Session。将此批注添加到@Configuration类,以将SessionRepositoryFilter公开为名为“springSessionRepositoryFilter”的bean,并由用户提供的Sessi...

通往神秘的道路的专栏 2万+

《Python等级认证CCF-GESP真题解析》专栏总目录

❤️ 专栏名称:《🌸 专栏介绍:中国计算机学会GESP《CCF编程能力等级谁》Python编程(1~8级)历届真题解析。🚀 订阅专栏:订阅后可阅读专栏内所有真题解析,真题持续更新中,限时9.9元,欢迎订阅!

人生就是一个不断学习的过程 1878

Spring Session & Redis实现Session共享

Spring Session & Redis实现Session共享 前后端分离Session、单点登录实现 Session 共享简单方案,充当笔记 一、Session和Cookie 1.Session简介: Session及会话,是web开发中得一种会话跟踪技术。 Session会话过程:当用户打开浏览器,从第一次请求开始,一直到最终关闭浏览器,就表示一次会话。 2.Cookie简介: Cookie是由服务器生成,保存在客户端得一种消息载体。这个载体中存放这用户访问该站点得会话状态消息,只要Cook

sout-lanys 5489

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Spring MVC 使用 Spring Session 实现 Session 共享-Redis

使用Spring Session 通过 Redis 实现 Session 共享,用于多实例应用 Session 共享的简单原理 用户第一次访问应用时,应用会创建一个新的 Session,并且会将 Session 的 ID 作为 Cookie 缓存在浏览器,下一次访问时请求的头部中带着该 Cookie,应用通过获取的 Session ID 进行查找,如果该 Session 存在且有效,则...

695

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring Session使用redis的各种问题

首先确保使用redis正常。 配置添加使用存储类型 # spring session使用存储类型 spring.session.store-type=redis pom.xml中要引入依赖 <dependency> <groupId>org.springframework.session</groupId> ...

Sur的工作日子 3842

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

使用Spring-Session Redis实现Session共享

知其然,还要知其所以然 ! 本篇介绍Spring-Session的整个实现的原理。以及对核心的源码进行简单的介绍! 实现原理介绍 实现原理这里简单说明描述: 就是当Web服务器接收到http请求后,当请求进入对应的Filter进行过滤,将原本需要由web服务器创建会话的过程转交给Spring-Session进行创建,本来创建的会话保存在Web服务器内存中,通过Spring-Sessio...

dzyls的笔记 6063
上一篇: spring-boot-starter-security的简单使用
下一篇: spring session、spring security和redis整合的简单使用
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值