spring+redis自主实现分布式session(非spring-session方式)
背景:最近对一个老项目进行改造,使其支持多机部署,其中最关键的一点就是实现多机session共享。项目有多老呢,jdk版本是1.6,spring版本是3.2,jedis版本是2.2。 1.方案的确定 接到这项目任务后,理所当然地google了,一搜索,发现解决方案分为两大类: tomcat的session管理 spring-session 对于“tomcat的session管理”,很不幸,线上代码用的是resin,直接pass了; 对于“spring-session”,这是spring全家桶系列,项目中正好使用了spring,可以很方便集成,并且原业务代码不用做任何发动,似乎是个不错的选择。但是,在引入spring-session过程中发生了意外:项目中使用的jedis版本不支持!项目中使用的jedis版本是2.2,而spring-session中使用的jedis版本是2.5,有些命令像"set PX/EX NX/XX",项目中使用的redis是不支持的,但spring-session引入的jedis支持,直接引入的话,风险难以把控,而升级项目中的redis版本的话,代价就比较高了。 综上所述,以上两个方案都行不能,既然第三方组件行不通,那就只能自主实现了。 通过参考一些开源项目的实现,自主实现分布式session的关键点有以下几点: