Build UpWhatWhyHow REFERBuild UpWhatWhyHow REFER레디스와 분산 락(1/2) - 레디스를 활용한 분산 락과 안전하고 빠른 락의 구현레디스를 활용한 분산 락에 대해 알아봅니다. 그리고 성능을 높이고 일관성을 보장하는 방법에 대해 알아봅니다.https://hyperconnect.github.io/2019/11/15/redis-distributed-lock-1.html[이슈 #2] 분산락을 활용한 중복 데이터 삽입 이슈 해결1문제인식 개발 중 클라이언트로부터 동일한 데이터에 대한 삽입 요청이 동시에 들어오는 경우, 중복 데이터 검사 로직을 거치더라도 데이터가 중복 삽입되는 문제를 발견했습니다. 회원이 모임을 가입할 때 발생하는 문제를 예시로 들어보겠습니다. 위와 같은 로직을 거쳐 회원이 모임에 가입하는 경우입니다. 위처럼 클라이언트의 오류로 동일한 두 요청이 동시에 들어온 경우 회원이 한 모임에 중복으로 가입하게 되는 문제가 발생하게 됩니다. 이 문제는 간단하게 Unique 제약조건을 통해 해결할 수 있습니다. 그러나 만약 '모임에 역할을 부여하여 관리자 회원은 관리자 역할과 일반 역할로 중복 가입할 수 있다.'라는 요구사항이 추가되면 다음과 같이 DB의 제약조건을 변경해 주어야 합니다. 또한, 제약조건을 변경하는 불편함을 ..https://yejun-the-developer.tistory.com/14SpringBoot 재고 감소 동시성 제어 - Redisson 사용 (+ AOP 적용)들어가기전 Redis는 docker를 사용하여 설치한다. https://devfunny.tistory.com/424 docker로 redis 설치 (with docker-compose) Redis 이미지 설치 docker pull redis docker-compose 파일 생성 version: '3.0' services: redis1: image: redis command: redis-server --requirepass root --port 6379 restart: always ports: - 6379:6379 doc.. devfunny.tistory.com redis 의존성 추가 implementation 'org.redisson:redisson-spring-boot-starter:3.17.7' Se..https://devfunny.tistory.com/888Redis로 분산 락을 구현해 동시성 이슈를 해결해보자!https://hudi.blog/distributed-lock-with-redis/Redisson을 이용한 재고 관리예제에 대한 전체 코드는 https://github.com/minseokLim/practice/tree/main/redisson-practice 에서 확인할 수 있다. 1. 서론 인터넷에서 제품을 구매할 땐 '재고'라는 게 있다. 근데 만약 쇼핑몰에서 10개의 상품을 준비했는데 10개 이상으로 주문이 들어오면 어떻게 될까? 그야말로 대참사다...-_- 주문 시간을 본 후 가장 마지막에 주문 한 사람들부터 차례대로 전화를 해서 사정을 얘기하고 주문 취소를 해야할 것이다... 죄 없는 고객 관리팀은 욕을 먹을 것이고, 서비스에 대한 고객들의 신뢰도는 떨어질 것이다. 물론 어떻게 해서든 상품을 더 준비하는 방법도 있겠지만, 개발자의 관점에선 저 상황이 안 오는 게 가장 좋다. 앞으로 소개할 방법은 그냥 필자가..https://mslim8803.tistory.com/74?category=1005542distributed-lock-practice/StockService.java at master · hgs-study/distributed-lock-practiceRedisson 분산락으로 동시성 제어. Contribute to hgs-study/distributed-lock-practice development by creating an account on GitHub.https://github.com/hgs-study/distributed-lock-practice/blob/master/src/main/java/com/distributedlockpractice/service/StockService.javaRedisson 분산락을 이용한 동시성 제어Redis 클라이언트인 Redisson 분산락(Distributed Lock)을 이용해서 동시성을 제어하는 포스팅을 진행해봤습니다 (예제 포함)https://velog.io/@hgs-study/redisson-distributed-lock[Spring] Redisson 라이브러리를 이용한 Distribute Lock 동시성 처리 (1/2)예제 및 테스트 코드는 github 에서 확인 가능합니다. Redisson 라이브러리를 이용한 Distribute Lock 동시성 처리(1) Redis를 통한 분산락을 이용해 동시성을 해결하는 방법에 대해 알아보고 이를 적용한 방법에 대해 예제코드를 함께 공유드리려 합니다. 분산 락(Distribute Lock) ? Lock: DB의 트랜잭션의 순차적 처리를 보장하기 위한 방법 여러 서버에서 동기화된 처리를 하기 위해 Database, Redis와 같은 공통된 저장소를 이용한 방법 (공통된 저장소를 사용해 여러 서버에 대한 동기화된 처리가 가능함) Redisson 사용 이유 Spring에서 제공하는 대표적인 redis 라이브러리로는 Lettuce가 있습니다. 하지만 Lettuce는 다음과 같은 단점이 존..https://devoong2.tistory.com/entry/Spring-Redisson-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-Distribute-Lock-%EB%8F%99%EC%8B%9C%EC%84%B1-%EC%B2%98%EB%A6%AC-1[Spring] Redisson 라이브러리를 이용한 Distribute Lock 동시성 처리 (1/2)예제 및 테스트 코드는 github 에서 확인 가능합니다. Redisson 라이브러리를 이용한 Distribute Lock 동시성 처리(1) Redis를 통한 분산락을 이용해 동시성을 해결하는 방법에 대해 알아보고 이를 적용한 방법에 대해 예제코드를 함께 공유드리려 합니다. 분산 락(Distribute Lock) ? Lock: DB의 트랜잭션의 순차적 처리를 보장하기 위한 방법 여러 서버에서 동기화된 처리를 하기 위해 Database, Redis와 같은 공통된 저장소를 이용한 방법 (공통된 저장소를 사용해 여러 서버에 대한 동기화된 처리가 가능함) Redisson 사용 이유 Spring에서 제공하는 대표적인 redis 라이브러리로는 Lettuce가 있습니다. 하지만 Lettuce는 다음과 같은 단점이 존..https://devoong2.tistory.com/entry/Spring-Redisson-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-Distribute-Lock-%EB%8F%99%EC%8B%9C%EC%84%B1-%EC%B2%98%EB%A6%AC-1[JPA] 락을 이용한 재고 관리JPA 락킹 포스트 에서 JPA 가 DB 에 락을 거는 방법에 대해서 학습을 했었다. 해당 포스트는 JPA 락킹 포스트 에서 공부했었던 내용과 거기에 추가적인 내용을 더해 예제를 만들어보며 락킹을 공부했던 내용을 기록하고자 작성하게 됐다.이전 포스트 작성한 바와 같이https://velog.io/@chullll/JPA-%EB%9D%BD%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9E%AC%EA%B3%A0-%EA%B4%80%EB%A6%AC