implementation("org.springframework.boot:spring-boot-starter-data-redis")
# application.yml
spring:
redis:
host: localhost
port: 6379
@Configuration
class RedisConfig {
@Value("\${spring.redis.host}")
lateinit var host: String
@Value("\${spring.redis.port}")
var port: Int = 0
@Bean
fun redisConnectionFactory(): RedisConnectionFactory{
return LettuceConnectionFactory(host, port);
}
@Bean
fun redisTemplate(): RedisTemplate<String, Any>{
val redisTemplate = RedisTemplate<String, Any>()
redisTemplate.setConnectionFactory(redisConnectionFactory())
// key, value serializer 설정 안할시 redis-cli 에서 이진데이터로 표시됩
redisTemplate.keySerializer = StringRedisSerializer()
redisTemplate.valueSerializer = StringRedisSerializer()
return redisTemplate
}
}
\xac\xed\x00\x05t\x00\x03key
와 같이 역직렬화할 수 있는 바이트 배열로 저장된다. 만약 문자열 형식으로 저장하려면 StringRedisSerializer
로 설정하고 JSON 형식으로 저장하려면 GenericJackson2JsonRedisSerializer
로 Serializer를 설정해주면 된다.// 기본 만료 기간 설정(초 단위)
redisTemplate.expire(key, sec)
// 만료 기간 설정(기간 단위까지 설정)
redisTemplate.expire(key, duration, TimeUnit)
Redis는 만료 기간 설정시 이미 만료 기간이 설정되어 있을 경우 원래 기간에 추가하는 방식이 아닌 초기화한다. 즉 만료 기간이 1분인 어떤 데이터에 다시 만료 기간이 1분을 설정한다면 1분이 추가되어 2분이 되는 것이 아니라 1분으로 초기화 된다.