Redis. spring에서 사용하기

seongha_h·2024년 3월 27일

Spring

목록 보기
3/6

Redis

Redis 는 Remote Dictionary Service 의 약자입니다.

Redis 는 오픈소스 in-memory 구조 데이터베이스 입니다.
즉, 메모리 기반의 데이터베이스 이기 때문에 Disk를 기반으로 하는 RDBMS보다 읽기, 쓰기가 빠르다는 장점이 있습니다.
이러한 장점 덕분에 데이터베이스, 캐시, 메세지 브로커 및 대기열로 사용된다고 합니다.

Redis는 Key/Value 구조로 데이터를 저장합니다. 자료구조 map과 같은 구조입니다.
뿐만 아니라 다양한 데이터 구조를 제공하고 있습니다.
(문자열, 해시, 리스트, 집합, ...)
더 많은 내용은 아래 공식문서를 참고하시면 좋을 것 같습니다.
https://redis.io/docs/about/

Notice

port

Redis는 기본적으로 6379 포트를 사용합니다.
아무런 설정도 하지 않았다면 6379 포트가 사용될 것입니다.

size

Redis의 아이템의 최대 크기는 512MB입니다.
키의 길이는 최대 512MB이고, Value도 마찬가지 입니다.

TTL (time to live)

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값을 가져올 수 있습니다.

spring에서 사용

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);
    }

}

Redis commands

  • Redis template 명령들

https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/RedisTemplate.html

  • Redis cli 명령들

https://inpa.tistory.com/entry/REDIS-%F0%9F%93%9A-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85Collection-%EC%A2%85%EB%A5%98-%EC%A0%95%EB%A6%AC

http://redisgate.kr/redis/introduction/redis_intro.php

profile
https://github.com/Fixtar

0개의 댓글