目前了解的做法有三种:
第一种,将shiro的cache存储在redis中。重写cacheManage,cache 变成 RedisCache。
参考网址:https://blog.csdn.net/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 代码
由于读取和更新太频繁都解决了,所以不推荐第三种,建议第二种。