标签: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