spring boot redis CacheManager


// 1.0
@Value("${erp.cache.expireation:32400}")  // in seconds 9小時
private long cacheExpiration;

@Value("#{${erp.cache.expires:{'activity:goods':600,'ordercount':300}}}")
private Map<String, Long> expires;

@Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate); // 開啟使用緩存名稱最為key前綴 redisCacheManager.setUsePrefix(false); //這里可以設置一個默認的過期時間 單位是秒 redisCacheManager.setDefaultExpiration(cacheExpiration); // 設置緩存的過期時間 redisCacheManager.setExpires(expires); return redisCacheManager; }
//2.0
 @Bean
    public CacheManager 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);
        //設置默認超過期時間是600秒
        defaultCacheConfig.entryTtl(Duration.ofSeconds(cacheExpiration)); 

//初始化RedisCacheManager

return new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
}

來自:https://www.cnblogs.com/wjx6270/p/11568202.html
https://www.cnblogs.com/dadiwm321/p/springboot_redis.html
https://www.cnblogs.com/ffaiss/p/11435775.html

 

@Bean
    public RedisCacheManager redisCacheManager(RedisTemplate redisTemplate) {
//spring cache注解序列化配置
        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getKeySerializer())) //key序列化方式
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getValueSerializer())) //value序列化方式
                .disableCachingNullValues() //不緩存null值
                .entryTtl(Duration.ofSeconds(cacheExpiration)); //默認緩存過期時間

    // 對每個緩存名稱應用不同的配置,自定義過期時間
        Map<String, RedisCacheConfiguration> expires=new HashMap<>();
        expires.put("activity:goods",redisCacheConfiguration.entryTtl(Duration.ofSeconds(600)));
        expires.put("ordercount",redisCacheConfiguration.entryTtl(Duration.ofSeconds(300)));

        RedisCacheManager redisCacheManager = RedisCacheManager.builder(redisTemplate.getConnectionFactory())
                .cacheDefaults(redisCacheConfiguration)
                .transactionAware()
                .initialCacheNames(expires.keySet()) // 注意這兩句的調用順序,一定要先調用該方法設置初始化的緩存名,再初始化相關的配置
                .withInitialCacheConfigurations(expires)
                .build();
        return redisCacheManager;
    }

來自:https://www.cnblogs.com/wjx6270/p/11568202.html
https://www.cnblogs.com/dadiwm321/p/springboot_redis.html
https://www.cnblogs.com/ffaiss/p/11435775.html
 

 

 

 

 

 @Override
    public void cacheMsgShop() {

        List<MsgUnreadCount> list=msgShopMapper.findShop();
        if(list==null||list.size()==0)return;
        logger.info("--mgs size:{}",list.size());
        final Cache cache = cacheManager.getCache(CACHE_NAME);
        if(cache == null){
            return;
        }
        for (int i = 0; i < list.size(); i++) {
            MsgUnreadCount msg=list.get(i);
            long shopId=msg.getShopId();
            int num=msg.getNum();
            cache.put(shopId,num);
        }

    }

    @Override
    public int findByShopId(long shopId) {

        final Cache cache = cacheManager.getCache(CACHE_NAME);
        if(cache == null){
            return 0;
        }
        Cache.ValueWrapper valueWrapper=cache.get(shopId);
        if(valueWrapper==null){
            return 0;
        }
        return Integer.valueOf( valueWrapper.get().toString());
    }


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM