본문 바로가기

Project

(2)
레디스를 활용한 동시성 문제 해결 Lettuce vs Redisson 레디스를 활용하여 동시성 문제를 해결할 때 사용하는 대표적인 두 가지- Lettuce- Redisson    Lettucesetnx 명령어를 활용하여 분산락 구현set if not exist의 줄임말로 키와 밸류를 set 할 때 기존의 값이 없을 때만 set 하는 명령어이다.spinLock방식이므로 retry 로직을 개발자가 작성해주어야 한다.♚ spin Lock이란?락을 획득하려는 스레드가 락을 사용할 수 있는지 반복적으로 확인하면서 락 획득을 시도하는 방식이다. 락이 해제될 때까지 계속해서 시도하므로, 락을 빠르게 획득할 수 있지만 시스템에 부하를 줄 수 있다. 적용 코드 ) Redissonpub/sub 기반으로 lock 구현 제공Pub/Sub 방식: 채널을 하나 만들고 락을 점유 중인 스레드가 락을..
레이스 컨디션 레이스 컨디션레이스 컨디션이란 컴퓨터 프로그램에서 동시에 실행되는 여러 프로세스나 스레드가 서로의 작업을 예상하지 못하고 경쟁하는 상황을 말한다. 이로 인해 프로그램의 동작이 예기치 않게 변할 수 있다. 표를 보고 쉽게 이해해 보자. Thread1StockThread2select *from stockwhere id = 1{id : 1, quantity : 5 } update set quantity = 4from stockwhere id = 1{id : 1, quantity : 4 }  {id : 1, quantity : 4 }select *from stockwhere id = 1 {id : 1, quantity : 3 }update set quantity = 3from stockwhere id = 1 예..