백엔드
어려움
코딩
분산 락 구현
Redis를 사용한 분산 락을 구현하세요
45분
150점
120개 테스트케이스
#3668
문제 설명
여러 서버 인스턴스에서 동시성 제어를 위한 분산 락을 Redis로 구현하세요.
요구사항
- 락 획득 (acquire): 지정된 시간 동안 락 획득 시도
- 락 해제 (release): 자신이 획득한 락만 해제
- 자동 만료: TTL 설정으로 데드락 방지
- 원자성 보장: Redis 명령어 활용
인터페이스
class DistributedLock:
def __init__(self, redis_client, lock_name, ttl=10):
pass
def acquire(self, timeout=5):
# 락 획득 시 True, 실패 시 False
pass
def release(self):
# 락 해제
pass
힌트
SET NX EX 명령어와 Lua 스크립트 활용
예제 테스트케이스
예제 1
입력
95 -923 -683 616 328 -231 767 685 624 -59 353 222 -521 874 638 637 940 627 812 -223 -602 -365 254 830 -441 -575 802 6 401 -132 -227 -272 953 -177 -117 593 -708 -123 390 200 -858 -775 910 -926 917 223 -202 -303 280 484 552 107 998 759 -338 502 85 648 -484 -954 -982 -468 -777 742 -107 381 575 188 -560 809 134 -363 720 347 -763 572 -838 -678 -530 862 -320 536 -870 -375 -803 198 574 -538 -685 6 19 694 877 -254 -249 0
출력
5872
예제 2
입력
70 161 -528 32 -403 -263 531 -670 29 -716 614 176 734 481 247 803 -985 -520 727 269 -639 365 122 892 989 439 75 -910 -908 -974 256 -958 120 599 94 619 -276 -102 -632 425 -387 82 693 231 777 158 552 877 -802 -894 -119 453 918 -559 -151 -459 -324 -213 -203 -915 838 981 502 164 889 -680 -318 -565 -428 9 834
출력
2256
예제 3
입력
40 -145 258 255 -739 -582 -144 690 420 -535 -821 764 -50 490 -115 -989 -843 -183 713 374 500 0 740 -877 355 542 590 -859 897 451 712 -816 55 -465 524 -878 -820 -753 -569 296 -142
출력
-1699
힌트
문제를 잘 읽고 접근하세요
예제를 먼저 손으로 풀어보세요
실행 버튼을 눌러 코드를 실행하세요.