方法一:tomcat + redis
就是使用session的代码跟以前一样,基于tomcat原生的session支持即可,使用一个叫做Tomcat RedisSessionManager的配置插件,让所有我们部署的tomcat都将session数据存储到redis即可。
在tomcat的配置文件中,配置一下
搞一个类似上面的配置即可。
还可以用上面这种方式基于redis哨兵支持的redis高可用集群来保存session数据,
方法二:tomcat + redisspring session + redis
分布式会话的这个东西重耦合在tomcat中,如果我要将web容器迁移成jetty,难道你重新把jetty都配置一遍吗?
因为上面那种tomcat + redis的方式好用,但是会严重依赖于web容器,不好将代码移植到其他web容器上去,尤其是你要是换了技术栈咋整?比如换成了spring cloud或者是spring boot之类的。
所以现在比较好的还是基于java一站式解决方案,spring了。人家spring基本上包掉了大部分的我们需要使用的框架了,spirng cloud做微服务了,spring boot做脚手架了,所以用sping session是一个很好的选择。
- 示例代码如下
给sping session配置基于redis来存储session数据,然后配置了一个spring session的过滤器,这样的话,session相关操作都会交给spring session来管了。接着在代码中,就用原生的session操作,就是直接基于spring sesion从redis中获取数据了。
实现分布式的会话,有很多种很多种方式,我说的只不过比较常见的两种方式,tomcat + redis早期比较常用;近些年,重耦合到tomcat中去,通过spring session来实现。