码迷,mamicode.com
首页 > 其他好文 > 详细

Shiro+Redis实现Tomcat集群Session共享

时间:2020-12-10 10:54:14      阅读:2      评论:0      收藏:0      [点我收藏+]

标签:ESS   rediscli   拦截器   ofo   逻辑   集成redis   依赖   http   缓存   

一、背景

  当我们使用了nginx做项目集群以后,就会出现一个很严重的问题亟待解决,那就是:tomcat集群之间如何实现session共享的问题,如果这个问题不解决,就会出现登陆过后再次请求资源依旧需要登陆的问题。这篇文章我们就解决这个问题。

二、实现步骤

说明:本篇是在spring+shiro集成的基础上进行改进的,如果不知道spring和shiro怎么集成,请移步:spring集成shiro做登陆认证

1.在pom.xml中添加shiro-redis和jedis的依赖
技术图片

2.首先我们需要对redis进行集成,在resources下新建config.properties
技术图片

3.在resources/spring文件夹下新建spring-redis.xml来集成redis操作客户端
技术图片

4.添加redisClient.java作为访问redis的客户端
技术图片

5.接着,我们对spring-shiro.xml做如下修改(红色标记的部分)
技术图片

6.spring.xml做如下修改
技术图片

到此我们就完了shiro+redis实现session共享的问题,其实也很简单,其中的实现逻辑也很简单,就是shiro的拦截器会首先去redis里面获取session,作为当本次请求的session.

其他代码以及简单测试代码不再贴出,给出github地址:https://github.com/hafizzhang/shiro-session-cluster.git

三、总结

  通过本文,我们就完成了spring+shiro+redis实现集群session共享的问题,经过亲测可行。但有一点遗憾的地方,就是每次请求至少会有8次redis的读操作,一次写操作,这个问题还没有找到很好的解决办法,本地使用ehcahe也不太现实,因为涉及到本地缓存和redis缓存同步的问题,如果你有好的办法,欢迎讨论交流学习!

Shiro+Redis实现Tomcat集群Session共享

标签:ESS   rediscli   拦截器   ofo   逻辑   集成redis   依赖   http   缓存   

原文地址:https://blog.51cto.com/15047484/2560392

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!