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
  • 相关阅读:
    面试题 16.07. 最大数值
    461. 汉明距离
    1290. 二进制链表转整数
    1486. 数组异或操作
    1480. 一维数组的动态和
    面试题 17.04. 消失的数字
    626. 换座位
    125. 验证回文串
    530. 二叉搜索树的最小绝对差
    ASP.NET页面之间传递值的几种方式
  • 原文地址:https://www.cnblogs.com/sdgtxuyong/p/14718200.html
Copyright © 2011-2022 走看看