• @Cacheable笔记


    https://blog.csdn.net/weixin_44488164/article/details/89479170

    常见的如分页查询:使用单引号指定分割符,最终会拼接为一个字符串

    @Cacheable(key = "#page+'-'+#pageSize")

    当然还可以使用单引号自定义字符串作为缓存的key值

    @Cacheable(key = "'countUsers'")
    在redis中效果值如图

    ---------------------------------------------------------

    详细讲解

    https://www.jianshu.com/p/931484bb3fdc

    对上述代码稍加改写,更适合自己

    cache:
      defaultCache:
        expireTime: 200
      userCacheList:
        - cacheName: xxxxx
          expireTime: 1800
        - cacheName: xxxxxxx
          expireTime: 1800
        - cacheName: xxxxxxxxxx
          expireTime: 30
        - cacheName: xxxxxxxxxxxxxxxx
          expireTime: 180000
    @Data
    @Configuration
    @ConfigurationProperties(prefix = "cache")
    public class CacheConfig {
        /**
         * The User cache list.
         */
        List<CacheExpireConfig> userCacheList;
        /**
         * The Default cache.
         */
        CacheExpireConfig defaultCache;
    
        /**
         * The type Cache expire config.
         */
        @Data
        public static class CacheExpireConfig {
            /**
             * The Cache name.
             */
            String cacheName;
            /**
             * The Expire time.
             */
            Long expireTime;
        }
    }
    /**
     * The type Redis cache config.
     */
    @Configuration
    public class RedisCacheConfig {
    
        /**
         * The Cache config.
         */
        @Autowired
        CacheConfig cacheConfig;
    
        /**
         * 缓存管理器
         *
         * @param lettuceConnectionFactory the lettuce connection factory
         * @return cache manager
         */
        @Bean
        public CacheManager cacheManager(RedisConnectionFactory lettuceConnectionFactory) {
            // 对每个缓存空间应用不同的配置
            Set<String> cacheNames = new HashSet<>();
            Map<String, RedisCacheConfiguration> initCacheConfigMap = new HashMap<>();
    
            List<CacheConfig.CacheExpireConfig> userCacheList = cacheConfig.getUserCacheList();
            for (CacheConfig.CacheExpireConfig userCache : userCacheList) {
                cacheNames.add(userCache.getCacheName());
                RedisCacheConfiguration userConfig = getDefaultRedisCacheConfiguration()
                        .entryTtl(Duration.ofSeconds(userCache.getExpireTime()));
                initCacheConfigMap.put(userCache.getCacheName(), userConfig);
            }
    
            RedisCacheManager cacheManager = RedisCacheManager.builder(lettuceConnectionFactory)
                    .cacheDefaults(getDefaultRedisCacheConfiguration())
                    .initialCacheNames(cacheNames)
                    .withInitialCacheConfigurations(initCacheConfigMap)
                    .build();
            return cacheManager;
        }
    
        private RedisCacheConfiguration getDefaultRedisCacheConfiguration() {
            RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig();
            // 设置缓存管理器管理的缓存的默认过期时间
            defaultCacheConfig = defaultCacheConfig.entryTtl(Duration.ofSeconds(cacheConfig.getDefaultCache().getExpireTime()))
                    // 设置 key为string序列化
                    .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
                    // 设置value为json序列化
                    //.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()))
                    .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new ProtostuffRedisSerializer()))
                    // 不缓存空值
                    //.disableCachingNullValues()
                    ;
            return defaultCacheConfig;
        }
    }
  • 相关阅读:
    关于CString与VARIANT(CComVariant)之间的转化
    关于_T()说明
    关于COM组件调用
    关于ATML信号定义的理解-1
    关于DOM的事件操作
    javascript(二)
    javascript(一)
    进程.线程.协程之间的区别?
    CSS
    HTML 浅层漫谈
  • 原文地址:https://www.cnblogs.com/tekikesyo/p/15410725.html
Copyright © 2020-2023  润新知