锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Redis实现自定义Shiro的缓存管理器

时间:2023-09-04 06:07:00 hdw306微型拉压传感器

Shiro临时缓存授权信息可用于缓存,不需要每次查看数据库,在一定程度上提高了使用效率。

依赖

   org.springframework.boot   spring-boot-starter-data-redis   2.5.3 

自定义Shiro的缓存管理器

import org.apache.shiro.cache.Cache; import org.apache.shiro.cache.CacheException; import org.apache.shiro.cache.CacheManager; import org.springframework.data.redis.core.RedisTemplate;  import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap;   public class ShiroRedisCacheManager implements CacheManager {      private final ConcurrentMap caches = new ConcurrentHashMap<>();     //TODO:缓存存活时间     private long cacheLive;     //TODO:前缀缓存名称     private String cacheKeyPrefix;     private RedisTemplate redisTemplate;      public ShiroRedisCacheManager() {     }      public ShiroRedisCacheManager(long cacheLive, String cacheKeyPrefix, RedisTemplate redisTemplate) {         this.cacheLive = cacheLive;         this.cacheKeyPrefix = cacheKeyPrefix;         this.redisTemplate = redisTemplate;     }      @Override     public  Cache getCache(String name) throws CacheException {         Cache cache = this.caches.get(name);         if (null == cache) {             //TODO:自定义Shiro的Cache             cache = new ShiroRedisCache(cacheLive, cacheKeyPrefix, redisTemplate);             this.caches.put(name, cache);         }         return cache;     }      public long getCacheLive() {         return cacheLive;     }      public void setCacheLive(long cacheLive) {         this.cacheLive = cacheLive;     }      public String getCacheKeyPrefix() {         return cacheKeyPrefix;     }      public void setCacheKeyPrefix(String cacheKeyPrefix) {         this.cacheKeyPrefix = cacheKeyPrefix;     }      public RedisTemplate getRedisTemplate() {         return redisTemplate;     }      public void setRedisTemplate(RedisTemplate redisTemplate) {         this.redisTemplate = redisTemplate;     } }

自定义配置

    @Resource(name = "shiroRedisTemplate")     private RedisTemplate redisTemplate;      /**      * 全局缓存时间,单位为秒      */     @Value("${hdw.jwt.expiration}")     private int cacheLive;      /**      * 全局缓存名称前缀,默认为应用名      */     @Value("${spring.application.name}")     private String cacheKeyPrefix;      /**      * 缓存管理器      *      * @return      */     @Bean     public CacheManager shiroRedisCacheManager() {         ShiroRedisCacheManager redisCacheManager = new ShiroRedisCacheManager(cacheLive * 1000, cacheKeyPrefix   ":shiro-cache:", redisTemplate);         return redisCacheManager;     }

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章