集群部署时的分布式session实现
Tomcat + Redis
这个其实是很方便的,就是使用Session的代码和以前一样,还是基于Tomcat原生的session支持即可,然后就是用一个叫Tomcat RedisSessionManager的东西,让所有部署的Tomcat都将Session数据存储到Redis中
可以再Tomcat 配置文件中配置一下
<value className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValue"/>
<Manager className="com.orangefunction.tomcat.redissesslons,RedisSessionManager" host="{redis.host}" port="{redis.port}" database="{redis.dbnum}" maxinactiveInterval="60"/>
搞一个类似上面的配置可,使用RedisSessionManager,然后指定Redis 的host 和 port就可以了
<Value className=“com.orangefunction.tomcat.redissessions.RedisSessionHandlerValue”/>
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" sentinelMaster="masger" sentinels="<sentinel1-ip>:26379,<sentinel2-ip>:26379,<sentinel3-ip>:26379" maxinactiveinterval="60"/>
还可以用上面这种方式,基于redis哨兵支持的redis高可用集群来保存session数据
spring session + redis
上述方式可以使用,但是严重依赖web容器,代码移植性太差
所以现在使用SpringSession + redis 来进行解决,方便很多
web_user_1234asdf1234_loginfo:{
web_token: asdfas123412asdf234,
userinfo:{asdfasdf,asdfasdf;,asdf,}