Redis 는 Remote Dictionary Service 의 약자입니다.
Redis 는 오픈소스 in-memory 구조 데이터베이스 입니다.
즉, 메모리 기반의 데이터베이스 이기 때문에 Disk를 기반으로 하는 RDBMS보다 읽기, 쓰기가 빠르다는 장점이 있습니다.
이러한 장점 덕분에 데이터베이스, 캐시, 메세지 브로커 및 대기열로 사용된다고 합니다.
Redis는 Key/Value 구조로 데이터를 저장합니다. 자료구조 map과 같은 구조입니다.
뿐만 아니라 다양한 데이터 구조를 제공하고 있습니다.
(문자열, 해시, 리스트, 집합, ...)
더 많은 내용은 아래 공식문서를 참고하시면 좋을 것 같습니다.
https://redis.io/docs/about/
Redis는 기본적으로 6379 포트를 사용합니다.
아무런 설정도 하지 않았다면 6379 포트가 사용될 것입니다.
Redis의 아이템의 최대 크기는 512MB입니다.
키의 길이는 최대 512MB이고, Value도 마찬가지 입니다.
Redis는 저장시에 expire time을 설정할 수 있습니다.
그러나, 이 만료시간은 key값에만 설정이 가능합니다.
예를 들어 string 형식의 Key안에 value값으로 여러 list를 저장해 두어도 만료 시간은 key값을 기준으로 동작합니다.
아래와 같이 Key에 만료시간을 설정할 수 있습니다.
expire key seconds
## mac
## 설치
brew install redis
## 실행
redis-server
## Redis 클라이언트 실행
## 새로운 터미널 창을 열고 아래 명령 입력
redis-cli
위 명령에서 볼 수 있듯이 redis-server를 실행시키고 redis-cli 터미널을 통해서 redis를 사용할 수 있습니다.
아래와 같이 key value로 string 을 사용해 보았습니다.
set 으로 key value를 저장하고, get Key를 통해 value값을 가져올 수 있습니다.

config
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory(); // Lettuce 사용
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
// redisTemplate.setKeySerializer(new StringRedisSerializer()); // Key: String
// redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(String.class)); // Value: 직렬화에 사용할 Object 사용하기
return redisTemplate;
}
}
사용
@Slf4j
@Service
@RequiredArgsConstructor
public class RedisDemo {
private final RedisTemplate<String, String> redisTemplate;
public String getStringValue(String key) {
return redisTemplate.opsForValue().get(key);
}
public void setStringValue(String key, String value) {
redisTemplate.opsForValue().set(key, value);
}
}