共享Session

分布式系统中,Session共享常用方案是托管到缓存。Spring Session可创建和管理Servlet HttpSession,默认用外置Redis存Session数据解决共享问题。博客介绍了引入依赖、session配置及测试,配置可设失效时间,测试表明session已纳入redis管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分布式系统中,Session 共享有很多的解决方案,其中托管到缓存中应该是最常用的方案之一。

spring官方说明:

Spring Session 提供了一套创建和管理 Servlet HttpSession 的方案。Spring Session 提供了集群 Session(Clustered Sessions)功能,默认采用外置的 Redis 来存储 Session 数据,以此来解决 Session 共享的问题。

1.引入依赖

		<!-- 共享session设置 -->
		<dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session-data-redis</artifactId>
		</dependency>

2.session配置

@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds=86400*30) //设置session失效时间
public class SessionConfig {

}

maxInactiveIntervalInSeconds: 设置 Session 失效时间,使用 Redis Session 之后,原 Spring Boot 的 server.session.timeout 属性不再生效。

3.session测试

	@RequestMapping(value = "/sessionId")
	public String sessionId(HttpSession session) {
		//session操作
		String userName = (String) session.getAttribute("userName");
		if (userName == null) {
			userName = "jiafeng";
		}
		session.setAttribute("userName", userName);
		
		
		return session.getId();
	}

执行请求之后发现页面获取的session和redis中存储的session一致,说明session已经纳入redis管理。

1b6d175a29d7b79c406ac0819be08e29612.jpg

redis中存储session和session失效时间。

9c5b3f5b3792d3b6c87892efe670219d8b8.jpg

转载于:https://my.oschina.net/u/3100849/blog/3054228

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值