redlock 2

Java로 Redis lock 구현하기

읽기 전에Redis의 락 레디스의 락에 대해서 정리한 글이다Spring의 Redis FrameworkSpring의 레디스 프레임 워크는 크게 3가지가 있다.Jedis , Lettuce, Redisson이렇게 있다. JedisRedis 동기식 Java 클라이언트, 비교적 간단하고 쉽다LettuceRedis 비동기 및 반응형 연결 Java 클라이언트, netty (자바 비동기 이벤트 기반 네트워크 애플리케이션)기반으로 이루어져 있다Reddisonnetty 기반의 고성능 비동기 및 락프리 Java 클라이언트, 락프리란 락을 사용하지 않고도 공유 자원에 대하여 여러 스레드 접근시 데이터의 일관성을 보장하는 프로그래밍 기법JedisRedis 용 비 동기식 Java 클라이언트라고 설명하며 비교적 간단하고 쉽게 사용..

학습 2024.10.21

Redis의 Lock

서론마피아 투게더를 개발하면서 Redis를 도입했다.Redis를 도입한 이유는 다음과 같다JVM 내부 세션 방식으로 관리하는 것보다 분산환경에 더 유연하게 설계 가능RDBMS보다 더 빠른 인메모리 DB하지만 여러가지 문제에 봉착하게 되었다.바로 동시성 문제에 봉착한 것이다.대표적인 예시로동시에 A, B가 마지막 멤버로 들어오면서 A가 사소한 차이로 먼저 들어왔을때A의 입장 요청이 B의 findRoom(참여인원 정보)보다 먼저 들어갈 경우 방의 입장정보를 계속 받고 있던 다른 유저는 마지막 유저가 A -> B로 바뀌는 동시성 이슈를 맛보게 될것이다.또한 DB(Redis)에는 해당 테이블에 먼저 입장한 A가 아닌 B가 최종적으로 저장되게 된다.이러한 문제는 @Transactional로 격리하여 해결할 수 있..

학습 2024.10.19