
com.github.anonymousmister.bootfastconfig.cache.redis.RedisConfig Maven / Gradle / Ivy
package com.github.anonymousmister.bootfastconfig.cache.redis;
import com.github.anonymousmister.bootfastconfig.cache.CacheBeanNameConstant;
import com.github.anonymousmister.bootfastconfig.cache.CacheConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.time.Duration;
import java.util.List;
import static com.github.anonymousmister.bootfastconfig.constant.BeanNameConstant.MY_REDIS_SERIALIZER;
/**
* The type Redis config.
*/
@ConditionalOnClass(value = {RedisSerializer.class, CachingConfigurerSupport.class, RedisTemplate.class})
public class RedisConfig {
@Qualifier(MY_REDIS_SERIALIZER)
@Autowired
private RedisSerializer redisSerializer;
@Autowired(required = false)
private List cacheConfigs;
/**
* Cache manager cache manager.
*
* @param connectionFactory the connection factory
* @return the cache manager
*/
@Bean(CacheBeanNameConstant.REDIS_CACHE_MANAGER)
@ConditionalOnMissingBean(name = {CacheBeanNameConstant.REDIS_CACHE_MANAGER}, value = RedisCacheWriter.class)
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
RedisCacheConfig redisCacheConfig = initRedisCacheConfig();
RedisCacheManager redisCacheManager = redisCacheConfig.buildRedisCacheManager(new MyRedisCacheWriter(connectionFactory));
return redisCacheManager;
}
RedisCacheConfig initRedisCacheConfig() {
RedisCacheConfig redisCacheConfig = new RedisCacheConfig();
if (cacheConfigs != null) {
for (CacheConfig cacheConfig : cacheConfigs) {
redisCacheConfig.setDefaultRedisCacheConfig(cacheConfig.getDefaultRedisCacheConfig());
cacheConfig.addRedisCacheConfig(redisCacheConfig);
}
}
//设置CacheManager的值序列化方式为 fastJsonRedisSerializer,但其实RedisCacheConfiguration默认使用StringRedisSerializer序列化key,
RedisSerializationContext.SerializationPair
© 2015 - 2025 Weber Informatics LLC | Privacy Policy