K
KRYFT Problem Bank
백엔드 어려움 코딩

분산 락 구현

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

힌트

실행 버튼을 눌러 코드를 실행하세요.