zoukankan      html  css  js  c++  java
  • 在spring boot中多次控制redis过期时间

    首先建立配置类,实例化2个CacheManager的bean,且实现json序列化,其中一个设为primary,,然后,在实际的service层注解中,用cachemanage引用这个两个不同的bean,,

    @Configuration
    public class RedisManager {
        
         @Bean
         @Primary
         public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
         //初始化一个RedisCacheWriter
         RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
         //设置CacheManager的值序列化方式为json序列化
         RedisSerializer<Object> jsonSerializer = new GenericJackson2JsonRedisSerializer();
         RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair.fromSerializer(jsonSerializer);
         RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig()
                 .serializeValuesWith(pair).entryTtl(Duration.ofHours(3));
    
         //设置默认超过时期是3小时
         //初始化RedisCacheManager
         return new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
         }
        
        @Bean
        public CacheProperties    cacheProperties() {
            CacheProperties cp = new CacheProperties();
            //cp.getRedis().setTimeToLive(Duration.ofHours(4));
            return cp;
        } 
        
        @Bean(name = "zhouyi")
         public RedisCacheManager cacheManager1(RedisConnectionFactory redisConnectionFactory) {
             //初始化一个RedisCacheWriter
             RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
             //设置CacheManager的值序列化方式为json序列化
             RedisSerializer<Object> jsonSerializer = new GenericJackson2JsonRedisSerializer();
             RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair.fromSerializer(jsonSerializer);
             RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig()
                     .serializeValuesWith(pair).entryTtl(Duration.ZERO);
    
             //设置默认超过时期为永久
            
             //初始化RedisCacheManager
             return new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
             }
        
    }

    在实际的操作中,通过cacheManager注解引用

    @Cacheable(cacheNames = "ZhouyiYao",key = "#rawId+':'+#bianYao",cacheManager = "zhouyi")
        public ZhouyiYao getZhaoyiYaoByZhanbu(Integer rawId, Integer bianYao) {
            return zhouyiYaoMapper.getZhaoyiYaoByZhanbu(rawId, bianYao);
        }

    实际操作,因为初始化时,yml中需要提升连接超时时间

    spring:
      redis:
        host: 127.0.0.1
        port: 6379
        connect-timeout: 15000
  • 相关阅读:
    react dva 的 connect 与 @connect
    es6 解构赋值 新认知/新习惯
    从一到面试题了解js异步机制:setTimeout 和 Pronmise
    React.Fragment 的作用:代替div作为外层
    解决dva dispatch yield生成器函数中异常中断,无法继续调用的问题
    vue v-model 与 组件化的表单组件如何沟通
    react 事件绑定的2种常用方式
    React dva 的使用
    gulp#4.0 Did you forget to signal async completion?
    gulp#4.0
  • 原文地址:https://www.cnblogs.com/sdgtxuyong/p/14718200.html
Copyright © 2011-2022 走看看