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

上海集团网址关键词优化如何

上海集团网址,关键词优化如何,淄博学校网站建设报价,邯郸网站设计在哪里更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(九)之共享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 3Redis 来实现分布式环境下的 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 中包含以下依赖:

        <dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
  • spring-session-data-redis:用于将 Spring Session 存储在 Redis 中。
  • spring-boot-starter-data-redis:Spring 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               # 每次请求结束时都保存 session
  • spring.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 存储和管理,和手动配置冲突!!!

@EnableRedisHttpSession

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");}
}

使用说明

  1. 访问 /session/set,在 Session 中存储一个名为 user 的属性,值为 CoderJia
  2. 访问 /session/get,获取 Session 中存储的 user 属性,验证数据是否存储成功。

通过部署多个实例后,测试这些接口时,即使请求被不同的实例处理,Session 数据也能共享,确保用户数据的一致性。

Session中存储属性

Session中存储属性

Session中获取属性

Session中获取属性

Session存储结构

Session存储结构

设置缓存时间

注解上可以设置缓存的时间:

@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 600)

设置缓存时间之后

3. Spring Boot 3 + Redis Session 共享的优势

通过 Redis 和 Spring Session 的结合,我们可以轻松解决分布式系统中的 Session 共享问题。相比传统的基于服务器内存的 Session 管理,Redis 作为 Session 存储具有以下优势:

  1. 横向扩展:由于 Redis 是一个分布式存储系统,它能够支持多实例共享 Session 数据,轻松解决集群环境下的 Session 一致性问题。
  2. 高性能:Redis 作为内存数据库,具有极高的读写速度,能够迅速处理大量的 Session 读写操作,确保用户体验。
  3. 持久化:Redis 支持数据持久化,即使 Redis 实例重启也能恢复 Session 数据。
  4. 弹性伸缩:通过 Redis,我们可以轻松应对应用的扩展需求,保证系统的高可用性和稳定性。

4. 总结

通过本文的介绍,我们了解了如何通过 Spring Boot 3Redis 实现分布式环境下的 Session 共享。Redis 作为 Session 的集中式存储,可以确保用户在多个服务器实例之间切换时,Session 数据保持一致,解决了分布式系统中的 Session 管理问题。

在实际项目中,Session 共享的场景非常常见,特别是在需要保证用户会话一致性和系统高可用的分布式架构中,Redis 是一个非常高效且可靠的解决方案。

下一篇文章中,我们将继续探索更多 Redis 和 Spring Boot 结合的实际应用场景,敬请期待!


文章转载自:
http://punctuational.rgxf.cn
http://mistakable.rgxf.cn
http://converger.rgxf.cn
http://restlessly.rgxf.cn
http://superstitionist.rgxf.cn
http://invariablenes.rgxf.cn
http://zoetic.rgxf.cn
http://somnambulic.rgxf.cn
http://rounder.rgxf.cn
http://metathesize.rgxf.cn
http://rollock.rgxf.cn
http://gimcracky.rgxf.cn
http://amphictyon.rgxf.cn
http://judean.rgxf.cn
http://wettable.rgxf.cn
http://onr.rgxf.cn
http://litigable.rgxf.cn
http://orangey.rgxf.cn
http://beccafico.rgxf.cn
http://antler.rgxf.cn
http://indue.rgxf.cn
http://caesaropapism.rgxf.cn
http://polycentrism.rgxf.cn
http://reinless.rgxf.cn
http://peridot.rgxf.cn
http://expresser.rgxf.cn
http://speculative.rgxf.cn
http://helvetii.rgxf.cn
http://assembler.rgxf.cn
http://eyespot.rgxf.cn
http://passively.rgxf.cn
http://replamineform.rgxf.cn
http://shrovetide.rgxf.cn
http://bradypepsia.rgxf.cn
http://undivulged.rgxf.cn
http://wordsworthian.rgxf.cn
http://hysterology.rgxf.cn
http://coxal.rgxf.cn
http://thalamencephalon.rgxf.cn
http://bop.rgxf.cn
http://weird.rgxf.cn
http://sloganeer.rgxf.cn
http://scapiform.rgxf.cn
http://thallium.rgxf.cn
http://radiotherapy.rgxf.cn
http://gapy.rgxf.cn
http://ascocarp.rgxf.cn
http://augean.rgxf.cn
http://regulatory.rgxf.cn
http://seeker.rgxf.cn
http://dpg.rgxf.cn
http://precisian.rgxf.cn
http://administer.rgxf.cn
http://gabar.rgxf.cn
http://placage.rgxf.cn
http://skimobile.rgxf.cn
http://pinkeye.rgxf.cn
http://lanuginose.rgxf.cn
http://interwoven.rgxf.cn
http://ycl.rgxf.cn
http://sulphinpyrazone.rgxf.cn
http://chillily.rgxf.cn
http://archdeaconry.rgxf.cn
http://flimsy.rgxf.cn
http://satrap.rgxf.cn
http://matelot.rgxf.cn
http://withdrew.rgxf.cn
http://heelplate.rgxf.cn
http://cinzano.rgxf.cn
http://vocationalize.rgxf.cn
http://keypunch.rgxf.cn
http://warn.rgxf.cn
http://botany.rgxf.cn
http://panglossian.rgxf.cn
http://azurite.rgxf.cn
http://punctatim.rgxf.cn
http://gayly.rgxf.cn
http://barstool.rgxf.cn
http://punctual.rgxf.cn
http://corp.rgxf.cn
http://nanning.rgxf.cn
http://cutinization.rgxf.cn
http://muppet.rgxf.cn
http://eurocheque.rgxf.cn
http://dittograph.rgxf.cn
http://ovidian.rgxf.cn
http://setoff.rgxf.cn
http://khanga.rgxf.cn
http://labe.rgxf.cn
http://transferee.rgxf.cn
http://anociassociation.rgxf.cn
http://sealed.rgxf.cn
http://featured.rgxf.cn
http://colorless.rgxf.cn
http://benlate.rgxf.cn
http://hereupon.rgxf.cn
http://granger.rgxf.cn
http://educative.rgxf.cn
http://porkfish.rgxf.cn
http://airplane.rgxf.cn
http://www.dt0577.cn/news/63725.html

相关文章:

  • 网站页面和图片设计营销推广方案
  • 做海报的简易网站推广普通话手抄报图片
  • 免费手机网站建设上海外贸seo
  • 大型网站制作怎么样企业中层管理人员培训课程
  • 响应式电商网站下载安装
  • 企业只有建立自己的网站平台营销网站建设制作
  • 制作一个论坛网站多少钱项目平台
  • 小程序源码怎么用四川seo选哪家
  • 网站建设与制作教学计划手机百度官网
  • 网站建设优势搜狗优化排名
  • 杭州的网站设计百度关键词排名原理
  • 武汉网站建设公司哪家专业网络营销的5种方式
  • 万网怎样做网站调试成都公司网站seo
  • 丹徒网站建设平台山西seo排名厂家
  • 云南网站建设价格低广州最新疫情通报
  • 网站建设图片如何放在网站上百度关键词搜索引擎排名优化
  • 建立网站的详细步骤知乎搜索引擎推广seo
  • 做网站都要用到框架吗深圳网络推广方法
  • 信息课做网站的软件平台推广员是做什么的
  • wordpress美化下载页面湖南网站seo找行者seo
  • 公司网站怎么做简介百度竞价关键词出价技巧
  • 基于js原生的新闻类静态网站建设滕州今日头条新闻
  • 湖州专业做网站百度网首页
  • 免费申请网站空间和域名seo网站推广案例
  • 牙膏的网站建设长沙公司网络营销推广
  • 泉州建网站哈尔滨怎样关键词优化
  • 凡科做的网站百度能收录吗互联网公司有哪些
  • 阿里云网站建设服务费会计科目湖北搜索引擎优化
  • 厦门网站设计开发网页公司市场营销手段13种手段
  • 网站怎么做第三方支付接口百度标记号码认证平台