当前位置: 首页 > news >正文

汶上县住房和建设局网站潜江 网站建设

汶上县住房和建设局网站,潜江 网站建设,wordpress主题demo导入,装修网站平台有哪些更多SpringBoot3内容请关注我的专栏#xff1a;《SpringBoot3》 期待您的点赞#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成Redis#xff08;九#xff09;之共享Session 1. 为什么需要 Session 共享2. Spring Session 和 Redis 的集成2.1. 引入依赖2.2. 配置 Redis 连接… 更多SpringBoot3内容请关注我的专栏《SpringBoot3》 期待您的点赞收藏⭐评论✍ 重学SpringBoot3-集成Redis九之共享Session 1. 为什么需要 Session 共享2. Spring Session 和 Redis 的集成2.1. 引入依赖2.2. 配置 Redis 连接2.3. 注解启用 Redis 作为 Session 存储2.4. 测试 Session 共享 3. Spring Boot 3 Redis Session 共享的优势4. 总结 在分布式系统中用户的 Session 共享是一个常见的需求。随着应用规模的增长单一的服务器已无法满足业务需求系统往往需要部署多台服务器组成集群。然而集群环境中如何保证用户在不同服务器间访问时的 Session 一致性成为了一个重要问题。 在这种情况下我们可以借助 Redis 这种分布式存储系统来实现 Session 共享。通过 Redis我们可以将用户的 Session 数据统一存储在 Redis 中不论用户访问的是哪一台服务器都能保证 Session 的一致性。 本篇文章将介绍如何使用 Spring Boot 3 和 Redis 来实现分布式环境下的 Session 共享确保用户在多个实例之间切换时Session 数据保持一致。 1. 为什么需要 Session 共享 当应用处于单服务器环境时用户的 Session 是直接保存在服务器内存中的。每当用户发起请求服务器会根据 Cookie 中的 Session ID 来读取对应的 Session 数据。但在分布式环境中应用往往部署了多台服务器如果 Session 数据只保存在单一服务器上那么用户请求的服务器不同Session 数据就可能丢失。 单台服务器用户的 Session 存储在内存中用户的请求总是由这台服务器处理Session 可直接使用。多台服务器当用户第一次访问时Session 可能存储在 A 服务器上但下一次请求由 B 服务器处理这时 B 服务器无法访问 A 服务器的内存导致 Session 数据丢失。 通过 Redis我们可以将 Session 存储在集中式的缓存系统中不管用户请求的是哪一台服务器都能访问同一个 Session 数据。 2. Spring Session 和 Redis 的集成 Spring 提供了 Spring Session 来解决分布式环境下的 Session 管理问题。它支持多种数据存储机制其中最常用的就是 Redis。通过将 Session 存储在 Redis 中所有服务器实例都能共享同一份 Session 数据从而解决分布式环境下的 Session 不一致问题。 2.1. 引入依赖 在 Spring Boot 项目中使用 Redis 实现 Session 共享首先需要引入相关的依赖。确保在 pom.xml 中包含以下依赖 dependencygroupIdorg.springframework.session/groupIdartifactIdspring-session-data-redis/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependencyspring-session-data-redis用于将 Spring Session 存储在 Redis 中。spring-boot-starter-data-redisSpring Boot 连接 Redis 所需的基础依赖。 2.2. 配置 Redis 连接 接下来我们需要在 application.yml 中配置 Redis 连接信息 具体配置见配置类org.springframework.boot.autoconfigure.session.RedisSessionProperties spring:data:redis:host: localhostport: 6379 # Redis 端口password: # 如果有密码可以在这里配置lettuce:pool:max-active: 100 # 最大并发连接数max-idle: 50 # 最大空闲连接数min-idle: 10 # 最小空闲连接数session:redis:namespace: coderjia:session # 定义存储在 Redis 中的 session 数据的命名空间flush-mode: on_save # 每次保存或更新 session 时立即将数据同步到 Redissave-mode: always # 每次请求结束时都保存 sessionspring.data.redis配置 Redis 的主机、端口和连接池参数。spring.session配置 Session 相关信息。 2.3. 注解启用 Redis 作为 Session 存储 另外一种配置方式是注解方式启用 Spring Session 的 Redis 支持只需在启动类或配置类上加上 EnableRedisHttpSession 注解即可 package com.coderjia.boot310redis;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;SpringBootApplication EnableRedisHttpSession(maxInactiveIntervalInSeconds 60, redisNamespace CoderJia:session) public class SpringBoot310RedisApplication {public static void main(String[] args) {SpringApplication.run(SpringBoot310RedisApplication.class, args);}} EnableRedisHttpSession 注解会自动配置 Spring Session 使用 Redis 进行 Session 存储和管理和手动配置冲突 2.4. 测试 Session 共享 接下来我们可以通过一个简单的 Controller 来测试 Session 共享是否成功。 package com.coderjia.boot310redis.demos.web;import jakarta.servlet.http.HttpSession; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** author CoderJia* create 2024/10/7 下午 06:17* Description**/ RestController RequestMapping(/session) public class SessionController {GetMapping(/set)public String setSession(HttpSession session) {session.setAttribute(user, CoderJia);return Session set for user: CoderJia;}GetMapping(/get)public String getSession(HttpSession session) {return User from session: session.getAttribute(user);} }使用说明 访问 /session/set在 Session 中存储一个名为 user 的属性值为 CoderJia。访问 /session/get获取 Session 中存储的 user 属性验证数据是否存储成功。 通过部署多个实例后测试这些接口时即使请求被不同的实例处理Session 数据也能共享确保用户数据的一致性。 Session中存储属性 Session中获取属性 Session存储结构 设置缓存时间 注解上可以设置缓存的时间 EnableRedisHttpSession(maxInactiveIntervalInSeconds 600)3. Spring Boot 3 Redis Session 共享的优势 通过 Redis 和 Spring Session 的结合我们可以轻松解决分布式系统中的 Session 共享问题。相比传统的基于服务器内存的 Session 管理Redis 作为 Session 存储具有以下优势 横向扩展由于 Redis 是一个分布式存储系统它能够支持多实例共享 Session 数据轻松解决集群环境下的 Session 一致性问题。高性能Redis 作为内存数据库具有极高的读写速度能够迅速处理大量的 Session 读写操作确保用户体验。持久化Redis 支持数据持久化即使 Redis 实例重启也能恢复 Session 数据。弹性伸缩通过 Redis我们可以轻松应对应用的扩展需求保证系统的高可用性和稳定性。 4. 总结 通过本文的介绍我们了解了如何通过 Spring Boot 3 和 Redis 实现分布式环境下的 Session 共享。Redis 作为 Session 的集中式存储可以确保用户在多个服务器实例之间切换时Session 数据保持一致解决了分布式系统中的 Session 管理问题。 在实际项目中Session 共享的场景非常常见特别是在需要保证用户会话一致性和系统高可用的分布式架构中Redis 是一个非常高效且可靠的解决方案。 下一篇文章中我们将继续探索更多 Redis 和 Spring Boot 结合的实际应用场景敬请期待
http://www.w-s-a.com/news/760714/

相关文章:

  • 哪有app制作公司上海seo排名
  • 长沙建站seo公司北京招聘信息
  • 建设网站情况说明范文四川个人证书查询网官网
  • 推广学校网站怎么做公司可以做多个网站吗
  • 游戏网站后台建设郑州定制网站
  • 商务公司网站建设网站建设如何自学
  • 现在建网站可以拖拉式的吗中国国内最新新闻
  • phpstorm网站开发产品logo设计
  • 电子商务网站建设与运营什么是单页面网站
  • 西安优化网站公司南阳微信网站
  • 购物网站线下推广方案佛山快速建站哪家服务专业
  • 临沂网站排名外贸网站推广方法之一
  • 手机网站百度关键词排名查询吕梁网站制作吕梁安全
  • 做网站媒体wordpress管理员账号数据库添加
  • php如何自己做网站wordpress怎么修改编辑代码
  • 网站建网站建设公司WordPress互联
  • 泊头市网站建设价格wordpress导航菜单位置
  • 怎么设立网站赚广告费网页制作素材模板图片
  • 做班级网站的目的网站设计制作公司需要什么资质
  • 济南做网站哪家好财政网站平台建设不足
  • php网站建设招聘网站开发与设计论文
  • 上海 网站建设平台 补贴网站开发招标文件范本
  • 延安网站建设公司电话手机上那个网站做农产品推广比较好
  • 增城哪家网站建设好如何做网站实名认证
  • 常州地区做网站个人购物网站需要备案吗
  • 网站建设公司 跨界鱼科技专业做服务器的网站都有哪些
  • 欧洲网站服务器网站建设费用计入什么科目
  • 网站的色调苏州策划网站模板建站公司
  • 怎么看网站用的什么后台公路建设项目可行性研究报告编制办法哪个网站查最新版
  • 可以看的网站的浏览器有哪些专业APP客户端做网站