
이전에도 잠깐 Redis에 관한 글을 작성했었는데, 우연히도 이번 프로젝트에서 Redis를 사용할 일이 생겨서 구현해보는 김에 작성해 본다.
우선 디펜던시부터 추가해 보자!

Springboot에서 Redis를 사용할 때, SpringRedisRepository, SpringRedisTemplate 이렇게 2가지의 방식이 존재하는데, 이번에는 SpringRedisTemplate를 사용해서 Redis를 사용할 예정이다.
// application.properties
Redis에 접속하기 위한 IP, PORT, PASSWORD, DATABASE를 작성한다.

// RedisConfig.java
Redis에 접속하기 위한 정보와, 어떤 Serializer를 사용할 것인지 설정한다.

RedisConfig로 이름을 설정하고, Springboot에서 config로 인식할 수 있게 @Configuration 어노테이션을 추가한다.

일반 생성자를 정의하는데, 여기서 @Value를 통해서 직접적으로 값을 넣지 않고, applcation.properties에 정의되어 있는 값을 주입한다. 참고로 이런 값들이 Github에 올라가게 되면 보안적으로 취약할 수 있으니 주의하자.

Redis와 연결하기 위한 Factory를 정의한다. 사실 로컬에서 Redis를 설치하고 연결하는 것도 좋지만, Docker를 사용해서 Redis를 실행하는 것이 좋은데, 일반적으로 Stand-Alone 방식으로 클러스터 구성이 아닌 독립적으로 Redis를 운영하기 때문에 RedisStandAloneConfiguration을 통해서 HostName, Port, Database, Password를 설정한다.
Springboot에서는 Redis에 연결하는 2개의 클라이언트 라이브러리들이 존재하는데, 하나는 Jedis, 다른 하나는 Lettuce이다. 하지만 Jedis는 동기방식으로 동작하며 Blocking 이슈가 발생할 수 있다. Lettuce는 동기/비동기 방식으로 동작하며, Non-Blocking 하게 요청을 처리할 수 있다. 또한 확장성이 뛰어나다는 장점이 존재한다. 하지만 초기 설정 같은 부분이 까다롭다는 단점이 존재한다.

RedisTemplate를 사용할 때, 어떤 Serializer를 사용할 것인지 설정해주어야 하는데, 우선 Key Value 쌍과 Hash 자료구조만 사용할 예정이기 때문에 StringRedisSerializer로 설정해주었다.

key value쌍만 전용으로 처리하는 stringRedisTemplate도 선언해 주었다.
이제 기본적인 설정이 끝났으니, 실제로 사용하기 위한 service와 controller를 정의하고 API로 만들어서 테스트해 보면 된다.

우서 StringRedisTemplate를 선언하고, 의존성 주입을 위한 @Autowired를 사용하여 StringRedisTemplate에 대한 의존성을 주입한다. controller에서 사용될 saveData와 showData를 선언한다.
위의 코드에서는 set(key, value)를 통해서 값을 저장하게 되는데, 실제로 Docker를 통해서 Redis 컨테이너를 실행시킨 후에 docker exec -it redis redis-cli를 통해서 접근한 후에 set, get 메서드를 통해서 key:value 쌍으로 데이터를 저장할 수 있다.

위와 마찬가지로 의존성 주입을 위해 @Autowired를 사용하여 RedisService에 대한 의존성을 주입한다.
@PostMapping을 통해서 PostMethod를, @GetMapping을 통해서 GetMethod를 간단하게 작성했다.
기존의 작성되어 있던 Swagger 문서를 통해서 API를 테스트해보자.


key에 name, value에는 heesang을 저장한다.

다음엔 name이라는 key로 접근해서 value 값을 읽어본다.

name이라는 key로 저장되어 있는 heesang이라는 value를 가져온 것을 확인할 수 있다.
이렇게 간단하게 Redis 디펜던시를 추가하고 RedisConfig, RedisTemplate를 통한 데이터 저장 및 조회에 대해서 다뤄보았다.
Github Link : https://github.com/heesane
heesane - Overview
heesane has 16 repositories available. Follow their code on GitHub.
github.com
'Backend > Framework' 카테고리의 다른 글
[Spring Boot] Spring Framework의 구성 요소와 배경 (0) | 2024.07.09 |
---|---|
[Springboot] AWS S3 with Spring Boot3 (1) | 2024.04.29 |
[Springboot] 로그인 구현 & JWT (2) - 로그인 구현 (1) | 2023.11.15 |
[Springboot] 로그인 구현 & JWT (1) - JWT 개념 (0) | 2023.11.09 |
[Springboot] WebSocket & STOMP (0) | 2023.10.04 |

이전에도 잠깐 Redis에 관한 글을 작성했었는데, 우연히도 이번 프로젝트에서 Redis를 사용할 일이 생겨서 구현해보는 김에 작성해 본다.
우선 디펜던시부터 추가해 보자!

Springboot에서 Redis를 사용할 때, SpringRedisRepository, SpringRedisTemplate 이렇게 2가지의 방식이 존재하는데, 이번에는 SpringRedisTemplate를 사용해서 Redis를 사용할 예정이다.
// application.properties
Redis에 접속하기 위한 IP, PORT, PASSWORD, DATABASE를 작성한다.

// RedisConfig.java
Redis에 접속하기 위한 정보와, 어떤 Serializer를 사용할 것인지 설정한다.

RedisConfig로 이름을 설정하고, Springboot에서 config로 인식할 수 있게 @Configuration 어노테이션을 추가한다.

일반 생성자를 정의하는데, 여기서 @Value를 통해서 직접적으로 값을 넣지 않고, applcation.properties에 정의되어 있는 값을 주입한다. 참고로 이런 값들이 Github에 올라가게 되면 보안적으로 취약할 수 있으니 주의하자.

Redis와 연결하기 위한 Factory를 정의한다. 사실 로컬에서 Redis를 설치하고 연결하는 것도 좋지만, Docker를 사용해서 Redis를 실행하는 것이 좋은데, 일반적으로 Stand-Alone 방식으로 클러스터 구성이 아닌 독립적으로 Redis를 운영하기 때문에 RedisStandAloneConfiguration을 통해서 HostName, Port, Database, Password를 설정한다.
Springboot에서는 Redis에 연결하는 2개의 클라이언트 라이브러리들이 존재하는데, 하나는 Jedis, 다른 하나는 Lettuce이다. 하지만 Jedis는 동기방식으로 동작하며 Blocking 이슈가 발생할 수 있다. Lettuce는 동기/비동기 방식으로 동작하며, Non-Blocking 하게 요청을 처리할 수 있다. 또한 확장성이 뛰어나다는 장점이 존재한다. 하지만 초기 설정 같은 부분이 까다롭다는 단점이 존재한다.

RedisTemplate를 사용할 때, 어떤 Serializer를 사용할 것인지 설정해주어야 하는데, 우선 Key Value 쌍과 Hash 자료구조만 사용할 예정이기 때문에 StringRedisSerializer로 설정해주었다.

key value쌍만 전용으로 처리하는 stringRedisTemplate도 선언해 주었다.
이제 기본적인 설정이 끝났으니, 실제로 사용하기 위한 service와 controller를 정의하고 API로 만들어서 테스트해 보면 된다.

우서 StringRedisTemplate를 선언하고, 의존성 주입을 위한 @Autowired를 사용하여 StringRedisTemplate에 대한 의존성을 주입한다. controller에서 사용될 saveData와 showData를 선언한다.
위의 코드에서는 set(key, value)를 통해서 값을 저장하게 되는데, 실제로 Docker를 통해서 Redis 컨테이너를 실행시킨 후에 docker exec -it redis redis-cli를 통해서 접근한 후에 set, get 메서드를 통해서 key:value 쌍으로 데이터를 저장할 수 있다.

위와 마찬가지로 의존성 주입을 위해 @Autowired를 사용하여 RedisService에 대한 의존성을 주입한다.
@PostMapping을 통해서 PostMethod를, @GetMapping을 통해서 GetMethod를 간단하게 작성했다.
기존의 작성되어 있던 Swagger 문서를 통해서 API를 테스트해보자.


key에 name, value에는 heesang을 저장한다.

다음엔 name이라는 key로 접근해서 value 값을 읽어본다.

name이라는 key로 저장되어 있는 heesang이라는 value를 가져온 것을 확인할 수 있다.
이렇게 간단하게 Redis 디펜던시를 추가하고 RedisConfig, RedisTemplate를 통한 데이터 저장 및 조회에 대해서 다뤄보았다.
Github Link : https://github.com/heesane
heesane - Overview
heesane has 16 repositories available. Follow their code on GitHub.
github.com
'Backend > Framework' 카테고리의 다른 글
[Spring Boot] Spring Framework의 구성 요소와 배경 (0) | 2024.07.09 |
---|---|
[Springboot] AWS S3 with Spring Boot3 (1) | 2024.04.29 |
[Springboot] 로그인 구현 & JWT (2) - 로그인 구현 (1) | 2023.11.15 |
[Springboot] 로그인 구현 & JWT (1) - JWT 개념 (0) | 2023.11.09 |
[Springboot] WebSocket & STOMP (0) | 2023.10.04 |