2018年07月06日 22:39:15 jiaojizu 阅读数:2698

1. 写在前边

spring-session-data-redis我们这里简称springSession。 我们知道springSession基于Redis实现了分布式Session的管理,那么下面我们说说什么是分布式session,分布式session实现原理,session为什么要存到redis中,那么SpringSession是如何把Session信息存储到redis中的呢(主题)?


2. 为什么会有分布式session的存在?

我们如果用nginx做一个流量分发,一部分流量请求tomcatA,一部分流量请求tomcatB,同一个用户的不同请求可能会产生在不同的tomcat上,我们知道session是由tomcat管理的,那么我们如何保证两台tomcat的session同步呢,为了解决这一问题,所以产生了分布式session。

总结:分布式session是解决分布式环境session不一致问题的。


3. 分布式session实现原理

为了解决session不一致问题,那么我们放弃服务器容器的默认session保存方式,我们将session保存到自己的数据库中,那么我们就解决了session不一致问题。


4. 分布式session为什么要存到redis中

因为redis是内存数据库,效率高,而且可以做分布式和高可用集群。


5. SpringSession是如何把Session信息存储到redis中的

总体思路是通过一个过滤器,然后重新包装request和reponse以及session。 在SpringSession实现过程中DelegatingFilterProxy就是这个过滤器入口。


6. 下面通过图我们看看SpringSession的实现原理

①sping配置类

(转载)spring-session-data-redis的实现原理剖析

 

 

②request包装类

(转载)spring-session-data-redis的实现原理剖析

 

③reponse包装类 

(转载)spring-session-data-redis的实现原理剖析

 

④替换request和reponse包装的调用流程

(转载)spring-session-data-redis的实现原理剖析

至此已分享结束。

相关文章:

  • 2021-05-21
  • 2021-12-06
  • 2022-12-23
  • 2021-04-30
  • 2021-04-13
  • 2021-09-06
  • 2021-05-20
猜你喜欢
  • 2021-05-01
  • 2021-12-15
  • 2022-12-23
  • 2021-06-14
  • 2021-07-28
  • 2022-12-23
  • 2021-08-23
相关资源
相似解决方案