45 lines
2.1 KiB
Java
45 lines
2.1 KiB
Java
|
|
package com.ga.common.config;
|
||
|
|
|
||
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||
|
|
import org.springframework.cache.CacheManager;
|
||
|
|
import org.springframework.cache.annotation.EnableCaching;
|
||
|
|
import org.springframework.context.annotation.Bean;
|
||
|
|
import org.springframework.context.annotation.Configuration;
|
||
|
|
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.GenericJackson2JsonRedisSerializer;
|
||
|
|
import org.springframework.data.redis.serializer.RedisSerializationContext;
|
||
|
|
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||
|
|
|
||
|
|
import java.time.Duration;
|
||
|
|
|
||
|
|
@Configuration
|
||
|
|
@EnableCaching
|
||
|
|
public class RedisConfig {
|
||
|
|
|
||
|
|
@Bean
|
||
|
|
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory cf, ObjectMapper objectMapper) {
|
||
|
|
RedisTemplate<String, Object> tpl = new RedisTemplate<>();
|
||
|
|
tpl.setConnectionFactory(cf);
|
||
|
|
tpl.setKeySerializer(new StringRedisSerializer());
|
||
|
|
tpl.setHashKeySerializer(new StringRedisSerializer());
|
||
|
|
GenericJackson2JsonRedisSerializer json = new GenericJackson2JsonRedisSerializer(objectMapper);
|
||
|
|
tpl.setValueSerializer(json);
|
||
|
|
tpl.setHashValueSerializer(json);
|
||
|
|
return tpl;
|
||
|
|
}
|
||
|
|
|
||
|
|
@Bean
|
||
|
|
public CacheManager cacheManager(RedisConnectionFactory cf, ObjectMapper objectMapper) {
|
||
|
|
RedisCacheConfiguration cfg = RedisCacheConfiguration.defaultCacheConfig()
|
||
|
|
.entryTtl(Duration.ofHours(1))
|
||
|
|
.disableCachingNullValues()
|
||
|
|
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
|
||
|
|
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(
|
||
|
|
new GenericJackson2JsonRedisSerializer(objectMapper)));
|
||
|
|
return RedisCacheManager.builder(cf).cacheDefaults(cfg).build();
|
||
|
|
}
|
||
|
|
}
|