目前了解的做法有三种:
第一种,将shiro的cache存储在redis中。重写cacheManage,cache 变成 RedisCache。
参考网址:https://blog.youkuaiyun.com/lhacker/article/details/19334305
第二种,将shiro的session存储在redis中。重写 sessionManager,sessionDao 变成 RedisSessionDao
参考网址:https://github.com/hafizzhang/shiro-session-cluster
第三种,将shiro的session存储在redis中,但是读取的时候从cache中读,若本地cache没有则从redis中读取。更新或者删除的 时候 向redis发送消息,通过redis发布订阅,清空cache。
参考网址:https://github.com/xiaolongyuan/shiro-redis-session 代码
在使用shiro redis session的 过程中,发现shiro读取和更新太频繁。
1.一个请求中读取session次数过多,可以在这个请求中缓存session,或者第三种做法。
解决方案
缓存session: https://www.cnblogs.com/xj-blog/p/8289429.html
2.更新频繁是由于更新过期时间造成的,可以由此判断是否更新。重写session 和 sessionFactory。
参考 https://github.com/xiaolongyuan/shiro-redis-session 代码
由于读取和更新太频繁都解决了,所以不推荐第三种,建议第二种。
本文介绍了三种将Apache Shiro框架与Redis结合使用的方案:一是将Shiro的缓存存储在Redis中;二是将Shiro的会话存储在Redis中;三是会话存储在Redis中并利用缓存提高读取效率。同时探讨了读取和更新过于频繁的问题及解决方案。
3361

被折叠的 条评论
为什么被折叠?



