spring-session-data-redis共享方案

欢迎关注我的个人博客和公众号,第一时间发布最新的干货文章

个人博客网站:www.spacedong.top
微信公众号:spacedong

传统的解决方案

在传统的 HTTP session 解决方案中,session 是存储在 JVM 的堆内存中。这个 JVM 和运行代码的 JVM 是一样的。

  • 优点:
    • 可以快速部署在多个服务器实例中。
    • 动态地增加或者减少服务器的实例。
  • 缺点:
    • 在动态增加或者减少了服务器实例后,需要 HTTP session 重新平衡。这里会消耗大量的资源。
    • 存储 HTTP session 的时候,需要消耗大量的堆内存,会给 GC 时带来性能瓶颈。
现在的解决方案

 为了解决在传统的 HTTP session 管理方案中的问题,需要把 session 存储在独立的数据结构中,如:Redis、Memcache等缓存中,让 session 实现共享。

实践
  • 准备Spring - session
  • 准备Redis
  • 准备Nginx
准备 Spring - session

1、第一步:添加依赖包

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>2.0.4.RELEASE</version>
</dependency>

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>
复制代码

2、第二步: web.xml 文件中添加 session 过滤器

<filter>  
    <filter-name>springSessionRepositoryFilter</filter-name>  
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>  
</filter>  
  <filter-mapping>  
    <filter-name>springSessionRepositoryFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
  </filter-mapping>  
复制代码

3、第三步:编写 spring-redis 的配置文件,根据自己的配置来具体设置。

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig" />

	<bean id="redisHttpSessionConfiguration"
		class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
		<property name="maxInactiveIntervalInSeconds" value="3600" />
	</bean>

	<bean id="jedisConnectionFactory"
		class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
		destroy-method="destroy">
		//redis的主机名
		<property name="hostName" value="${redis.host}" />
		//redis的连接端口
		<property name="port" value="${redis.port}" />
		//连接超时时间
		<property name="timeout" value="${redis.timeout}" />
		<property name="usePool" value="true" />
		<property name="poolConfig" ref="jedisPoolConfig" />
		//这里是redis中的数据库的设置,默认是存在第一个库中
		<property name="database" value="0"/>
	</bean>

	<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
		<property name="connectionFactory" ref="jedisConnectionFactory" />
	</bean>
复制代码

4、第四步:在 Spring.xml 的配置文件中设置

<!-- Redis的配置-->
<import resource="classpath:spring-redis.xml"/>
复制代码
现在就可以完成关于spring-session的共享了

想要获得更多的优质技术文章,可以关注下方的微信公众号 spacedong

为优质的文章而赞赏,这是为作者能持续输出的最大肯定!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值