74 lines
3.2 KiB
Kotlin
74 lines
3.2 KiB
Kotlin
package kr.co.vividnext.sodalive.configs
|
|
|
|
import org.springframework.beans.factory.annotation.Value
|
|
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.connection.lettuce.LettuceConnectionFactory
|
|
import org.springframework.data.redis.core.RedisTemplate
|
|
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories
|
|
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
|
|
@EnableRedisRepositories
|
|
class RedisConfig(
|
|
@Value("\${spring.redis.host}")
|
|
private val host: String,
|
|
@Value("\${spring.redis.port}")
|
|
private val port: Int
|
|
) {
|
|
@Bean
|
|
fun redisConnectionFactory(): RedisConnectionFactory {
|
|
return LettuceConnectionFactory(host, port)
|
|
}
|
|
|
|
@Bean
|
|
fun redisTemplate(): RedisTemplate<*, *> {
|
|
val redisTemplate: RedisTemplate<*, *> = RedisTemplate<Any, Any>()
|
|
redisTemplate.setConnectionFactory(redisConnectionFactory())
|
|
return redisTemplate
|
|
}
|
|
|
|
@Bean
|
|
fun cacheManager(redisConnectionFactory: RedisConnectionFactory): RedisCacheManager {
|
|
val defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig()
|
|
.entryTtl(Duration.ofMinutes(30))
|
|
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(StringRedisSerializer()))
|
|
.serializeValuesWith(
|
|
RedisSerializationContext.SerializationPair.fromSerializer(
|
|
GenericJackson2JsonRedisSerializer()
|
|
)
|
|
)
|
|
|
|
val cacheConfigMap = mutableMapOf<String, RedisCacheConfiguration>()
|
|
cacheConfigMap["default"] = RedisCacheConfiguration.defaultCacheConfig()
|
|
.entryTtl(Duration.ofMinutes(30))
|
|
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(StringRedisSerializer()))
|
|
.serializeValuesWith(
|
|
RedisSerializationContext.SerializationPair.fromSerializer(
|
|
GenericJackson2JsonRedisSerializer()
|
|
)
|
|
)
|
|
cacheConfigMap["cache_ttl_3_days"] = RedisCacheConfiguration.defaultCacheConfig()
|
|
.entryTtl(Duration.ofDays(3))
|
|
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(StringRedisSerializer()))
|
|
.serializeValuesWith(
|
|
RedisSerializationContext.SerializationPair.fromSerializer(
|
|
GenericJackson2JsonRedisSerializer()
|
|
)
|
|
)
|
|
|
|
return RedisCacheManager.builder(redisConnectionFactory)
|
|
.cacheDefaults(defaultCacheConfig)
|
|
.withInitialCacheConfigurations(cacheConfigMap)
|
|
.build()
|
|
}
|
|
}
|