종우의 삶 (전체 공개)

쉬어가기 - Redisson은 무엇일까? 본문

개발/Spring

쉬어가기 - Redisson은 무엇일까?

jonggae 2024. 8. 5. 13:13

동시성 처리에 사용했던 Redisson에 대해 좀 더 알아보기로 하였다. 어쨌든 내가 사용한 기능을 파악하는 것은 중요하니까.

https://github.com/redisson Redisson 깃허브에 위키 파일이 있다. 좋다. 실제 사용하는 방법에 대해 주로 작성되어 있다.

 

Redisson

Easy Redis Java client and Real-Time Data Platform - Redisson

github.com

 

Redisson과 Redis

애초에 Redisson은 Redis를 위한 Java 클라이언트 라이브러리이다.

Redis는 잘 알다시피 인메모리 데이터 구조 저장소로, 분산 캐시, 메시지 브로커, 큐 등 다양한 용도로 사용된다.

Redisson은 이러한 Redis의 기능을 Java 어플리케이션에서 쉽게 사용할수 있도록 해주는 도구인 것.

 

Redisson의 주요 특징:

1. 분산 캐싱 : 여러 서버에서 동일한 데이터에 빠르게 접근해야 할 때, Redisson의 Map 구조를 사용하여 key-value 형태로 데이터를 저장하고 조회한다.

 

2. 세션 관리 : 웹 어플리케이션에서 사용자 세션을 여러 서버에서 공유해야 할 때, 세션 Id를 Key로, 세션 데이터를 Value로 저장한다.

 

3. 분산 락 : 여러 서버에서 동시에 같은 리소스에 접근하는 것을 방지해야 할 때, Lock 인터페이스를 사용하여 크리티컬 섹션을 보호

 

4. 메시지 큐 : Redisson에도 Queue나 Topic을 사용하여 메시지를 발행 / 구독할 수 있다.

 

5. RateLimit : API 요청 제한이나 사용량 제어가 필요할 때, 초당 처리 가능한 요청 수를 제한할 수 있음.

 

6. 실시간 데이터 처리 : 실시간으로 데이터를 업데이트하고 클라이언트에 전달해야 할 때, Live Object를 사용하여 객체 변경을 실시간으로 감지하고 전파함

 

7.

이 외에도 분산 컴퓨팅, 캐시 동기화 등 다양한 상황들을 Java 환경에서 쉽게 사용할 수 있게 해준다. 분산 환경에서의 데이터 관리와 동기화 문제를 효과적으로 해결 할 수 있다.

 


 

기본적으로 MSA는 Redisson을 유용하게 사용할 수 있다. 데이터 동기화, 분산 락, 캐싱, 메시징 등을 사용해 복잡성을 줄이게 해줌. 사실상 굉장히 많은 기능이 있으나 사용하면서 필요할 때 찾아보면 될 것이다.

 

그렇다면 이번 프로젝트에서 redisson 의 어떤 기능을 사용했는지 알아보자.

 

https://jonggae.tistory.com/170

 

MSA Project - 대용량 요청 처리 테스트 (1만 건)

예약 구매 시나리오에 맞게, 특정 시간에 많은 주문이 몰리게되는 테스트를 진행했다.  주어진 상황특정 시간에 상품이 오픈되면 한정된 재고 (eg. 10개) 를 1만명이 구매하려한다.구매, 결제 과

jonggae.tistory.com

 

이전 포스팅에서 

 

분산 락을 구현하는데 사용되었다. 해당 글을 참고해보자.

 

동시에 여러 요청들이 들어오는 동시성 문제를 해결하기 위해서 락 획득, 락 유지 시간을 조절해가며 테스트를 했었다.

 

여러 기능 중 하나를 사용해보았으니 다른 기능들이 쓰일 날도 오지않을까..

Comments