66 lines
2.7 KiB
Kotlin
66 lines
2.7 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(connectionFactory: RedisConnectionFactory): RedisCacheManager {
|
|
val defaultConfig = RedisCacheConfiguration.defaultCacheConfig()
|
|
.entryTtl(Duration.ofHours(1)) // Default TTL
|
|
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(StringRedisSerializer()))
|
|
.serializeValuesWith(
|
|
RedisSerializationContext.SerializationPair.fromSerializer(
|
|
GenericJackson2JsonRedisSerializer()
|
|
)
|
|
)
|
|
|
|
val weekLivedCacheConfig = RedisCacheConfiguration.defaultCacheConfig()
|
|
.entryTtl(Duration.ofDays(3))
|
|
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(StringRedisSerializer()))
|
|
.serializeValuesWith(
|
|
RedisSerializationContext.SerializationPair.fromSerializer(
|
|
GenericJackson2JsonRedisSerializer()
|
|
)
|
|
)
|
|
|
|
return RedisCacheManager.RedisCacheManagerBuilder
|
|
.fromConnectionFactory(connectionFactory)
|
|
.cacheDefaults(defaultConfig)
|
|
.withCacheConfiguration("weekLivedCache", weekLivedCacheConfig)
|
|
.build()
|
|
}
|
|
}
|