UceRedisConfig.java 2.57 KB
package com.topdraw.config;


import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;

import java.time.Duration;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @author :
 * @description:
 * @function :
 * @date :Created in 2022/6/19 16:30
 * @version: :
 * @modified By:
 * @since : modified in 2022/6/19 16:30
 */
@Slf4j
@Configuration
public class UceRedisConfig {

    @Autowired
    private RedisConfig redisConfig;
    @Autowired
    private RedisConnectionFactory redisConnectionFactory;

    @Bean(value = "uceRedisTemplate")
    public RedisTemplate<Object, Object> uceRedisTemplate() {
        return redisConfig.redisTemplate(redisConnectionFactory);
    }
    /**
     * 自定义缓存管理器
     */
    @Bean(value = "uceCacheManagemer")
    @Primary
    public RedisCacheManager cacheManager(RedisConnectionFactory factory) {
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
        Set<String> cacheNames = new HashSet<>();
//        cacheNames.add("car");
//        cacheNames.add(RedisKeyConstants.cacheTaskByEvent);
        cacheNames.add(RedisKeyConstants.cacheTaskProcessByMemberId);
        ConcurrentHashMap<String, RedisCacheConfiguration> configMap = new ConcurrentHashMap<>();
//        configMap.put("car", config.entryTtl(Duration.ofMinutes(6L)));
        configMap.put(RedisKeyConstants.cacheTaskProcessByMemberId, config.entryTtl(Duration.ofDays(1)));
//        configMap.put(RedisKeyConstants.cacheTaskByEvent, config);

        //需要先初始化缓存名称,再初始化其它的配置。
        RedisCacheManager cacheManager = RedisCacheManager.builder(factory).
                initialCacheNames(cacheNames).withInitialCacheConfigurations(configMap).build();
        return cacheManager;
    }
}