61 lines
2.3 KiB
Kotlin
61 lines
2.3 KiB
Kotlin
package kr.co.vividnext.sodalive.configs
|
|
|
|
import org.springframework.beans.factory.annotation.Value
|
|
import org.springframework.context.annotation.Bean
|
|
import org.springframework.context.annotation.ComponentScan
|
|
import org.springframework.context.annotation.Configuration
|
|
import org.springframework.context.annotation.FilterType
|
|
import org.springframework.data.redis.connection.RedisClusterConfiguration
|
|
import org.springframework.data.redis.connection.RedisConnectionFactory
|
|
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration
|
|
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
|
|
import org.springframework.data.redis.core.RedisTemplate
|
|
import org.springframework.data.redis.core.StringRedisTemplate
|
|
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories
|
|
import java.time.Duration
|
|
|
|
@Configuration
|
|
@EnableRedisRepositories(
|
|
basePackages = ["kr.co.vividnext.sodalive.redis.v2"],
|
|
redisTemplateRef = "valkeyTemplate",
|
|
excludeFilters = [
|
|
ComponentScan.Filter(
|
|
type = FilterType.ASSIGNABLE_TYPE,
|
|
classes = [org.springframework.data.jpa.repository.JpaRepository::class]
|
|
)
|
|
]
|
|
)
|
|
class ValkeyConfig(
|
|
@Value("\${spring.valkey.host}")
|
|
private val host: String,
|
|
@Value("\${spring.valkey.port}")
|
|
private val port: Int
|
|
) {
|
|
@Bean(name = ["valkeyConnectionFactory"])
|
|
fun valkeyConnectionFactory(): RedisConnectionFactory {
|
|
val clusterConfig = RedisClusterConfiguration()
|
|
clusterConfig.clusterNode(host, port)
|
|
|
|
val clientConfig = LettuceClientConfiguration.builder()
|
|
.commandTimeout(Duration.ofSeconds(5))
|
|
.shutdownTimeout(Duration.ofSeconds(5))
|
|
.useSsl()
|
|
.disablePeerVerification()
|
|
.build()
|
|
|
|
return LettuceConnectionFactory(clusterConfig, clientConfig)
|
|
}
|
|
|
|
@Bean(name = ["valkeyTemplate"])
|
|
fun valkeyTemplate(): RedisTemplate<*, *> {
|
|
val redisTemplate: RedisTemplate<*, *> = RedisTemplate<Any, Any>()
|
|
redisTemplate.setConnectionFactory(valkeyConnectionFactory())
|
|
return redisTemplate
|
|
}
|
|
|
|
@Bean(name = ["valkeyStringRedisTemplate"])
|
|
fun valkeyStringRedisTemplate(): StringRedisTemplate {
|
|
return StringRedisTemplate(valkeyConnectionFactory())
|
|
}
|
|
}
|