天天看点

Shrio+Redis实现tomcat集群session共享

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

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.

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