RedisClusterManager redis集群模式的实现类
WorkAloneRedisManager 的2个实现类 单机和集群分别实现获取redis连接的抽象方法
RedisSentinelManager
以上说的几个类 都是对与redis的操作 还未和shiro的session管理机制交互 下面咱说说怎么与shiro交互的 刚才也说了 想要基于shiro来实现持久化存储 只需要: 第一种方式 1、继承CacheManager 实现getCache的方法 2、实现Cache接口 实现基于redis的增删改查 3、将 CacheManager 设置到 DefaultWebSecurityManager 第二种方式 1、在sessionDAO的实现类中直接 存储到redis中 2、将sessionDAO 设置到 DefaultWebSessionManager
先看第一种方式
- RedisCacheManager 类
顾命思意 缓存的管理者 那么这个类中保存了很多的缓存 实现CacheManager接口
先看下内存ConcurrentHashMap中是否存在该缓存 如果不存在则定义该缓存然后放入Map中 ;下面来看下 如何定义的缓存
- RedisCache 类
实现了 Cache 接口 通过IRedisManager接口对缓存进行增删改查操作
再看下第二种方式
RedisSessionDAO
继承AbstractSessionDAO 抽象类 这里面也是通过 IRedisManager接口对缓存进行增删改查操作 内存存储对象为ThreadLocal本质上还是一个Map集合 具体内容就不再重复分析了 朋友们可以下载源码看下即可
源码支持
https://gitee.com/pingfanrenbiji/spring-boot-2.0.3/tree/master/spring-boot-shiro https://gitee.com/pingfanrenbiji/shiro-redis.git