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配置类
②request包装类
③reponse包装类
④替换request和reponse包装的调用流程
至此已分享结束。