springcloud如何共享session

前言

微服务时代下,很多的传统项目开始转型。那么一定会面临一个问题,微服务下的session如何管理?传统项目下,我们的session完全由服务端管理,session存在服务端的内存中,不存在共享的问题。但是微服务模式下,所有服务分散在天南海北,传统方式显然解决不了共享问题,然而spring为我们提供了完美的解决方案:spring-session

spring-session

spring-session支持我们将session信息持久化存储,用户认证中心(认证子服务整合spring-session)后将session存在数据库(一般是redis)中,需要使用session的子服务同样整合spring-session便可取出session使用。

整合

spring-session的整合及其简单

依赖

		<!-- spring session -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

配置

yml文件增加配置:

spring:
	session:
		store-type: redis
	redis:
	    database: 0
	    host: localhost
	    port: 6379
	    password:

store-type即存储介质,支持如图选项
存储介质
一般我们都是使用redis,其高速缓存有效期的机制与session天然契合
然后。。就整合完了,存储使用session的方法依旧

request.getSession().setAttribute("xxx", "xxx");
request.getSession().getAttribute("xxx");

如此,令人头疼的session共享问题轻松解决,无需修改任何代码,spring-session天下第一!!!

有效期配置

有效期通过

spring:
	session:
		timeout: 600

属性配置,单位ms

验证

  1. 登录redis./redis-cli
  2. 认证存储session
  3. 查看sessionkeys *
  4. 可以看到session信息以spring.session打头的key存储,规则应该可以通过配置修改(一般也没必要改)
  5. 查看session有效期ttl
  6. 完美!

猜你喜欢

转载自blog.csdn.net/weixin_42189048/article/details/106389840