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
  • 相关阅读:
    MySQL中的char与varchar详解
    有关PHPstorm的git环境的配置和git密钥的生成总结
    PHP开发中常用的字符串操作函数
    PHP 二维数组排序函数的应用 array_multisort()
    大龄程序员的出路在哪里
    近期面试总结(PHP后端开发工程师)(部分笔试题)
    B-Tree目录和Hash索引的区别
    curl、fopen和file_get_contents区别
    什么是OAuth授权
    SEO 统计算法
  • 原文地址:https://www.cnblogs.com/sdgtxuyong/p/14718200.html
Copyright © 2011-2022 走看看