Spring-session整合到Redis

Posted 是柯南君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring-session整合到Redis相关的知识,希望对你有一定的参考价值。

闲来无事,学习一下spring的session管理,作为一个初学者,我了解到了如下内容:

1、为何要用Spring-session

在传统单机web应用中,一般使用tomcat/jetty等web容器时,用户的session都是由容器管理。浏览器使用cookie中记录sessionId,容器根据sessionId判断用户是否存在会话session。这里的限制是,session存储在web容器中,被单台服务器容器管理。

但是网站主键演变,分布式应用和集群是趋势(提高性能)。此时用户的请求可能被负载分发至不同的服务器,此时传统的web容器管理用户会话session的方式即行不通。除非集群或者分布式web应用能够共享session,尽管tomcat等支持这样做。但是这样存在以下两点问题:

  • 需要侵入web容器,提高问题的复杂
  • web容器之间共享session,集群机器之间势必要交互耦合

 

有了spring-session之后,我们可以将session保存到Redis、Mongodb等nosql数据库。这样就避免了单点缓存的限制。

 

Let\'s do it

 

1.引入jar包

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

2、在application.properties中加入如下配置文件

#设置session存储格式为redis
spring.session.store-type=redis
server.servlet.session.timeout=3600
#session更新策略,有ON_SAVE、IMMEDIATE,前者是在调用#SessionRepository#save(org.springframework.session.Session)时,在response commit前刷新缓存,#后者是只要有任何更新就会刷新缓存
spring.session.redis.flush-mode=on-save
spring.session.redis.namespace=spring:session
#redis配置
spring.redis.database=0
spring.redis.host=10.34.51.234
spring.redis.password=123456
spring.redis.pool.max-active=8
spring.redis.pool.max-idle=8
spring.redis.pool.max-wait=-1
spring.redis.pool.min-idle=0
spring.redis.port=6379

3、配置redis服务器

(略)

4、编写SpringBoot程序

 

 5、运行登录一下吧

 

 

 可以看到查看到了session信息

6、未完成序列化操作。不过我感觉也没必要完成序列化操作吧~

 结束!

 

  

以上是关于Spring-session整合到Redis的主要内容,如果未能解决你的问题,请参考以下文章

spring-session实现session共享案例(单点登录)

Spring-SESSION+Redis 实现Session共享

Spring-Session+Redis实现session共享

spring-session用redis实现session共享实践

spring-session redis集群配置步骤总结

原保存一下之前spring-session的redis单点登录配置文件跨域