Redis로 분산 잠금을 생성하는 방법은 무엇입니까?

dyip1

redis 문서에서 SETNX를 통해 기본 잠금을 구현할 수 있음을 발견했습니다.

http://redis.io/commands/setnx

  • C4는 잠금을 획득하기 위해 SETNX lock.foo를 보냅니다.

  • 크래시 된 클라이언트 C3는 여전히 그것을 보유하고 있으므로 Redis는 C4에 0으로 응답합니다.

  • C4는 잠금이 만료되었는지 확인하기 위해 GET lock.foo를 보냅니다. 그렇지 않은 경우 잠시 휴면 상태가되고 처음부터 다시 시도합니다.

  • 대신 lock.foo의 Unix 시간이 현재 Unix 시간보다 오래되어 잠금이 만료되면 C4는 다음을 수행하려고합니다.

    GETSET lock.foo

  • GETSET 시맨틱 때문에 C4는 키에 저장된 이전 값이 여전히 만료 된 타임 스탬프인지 확인할 수 있습니다. 그렇다면 잠금을 획득 한 것입니다.

  • 다른 클라이언트 (예 : C5)가 C4보다 빠르고 GETSET 작업으로 잠금을 획득 한 경우 C4 GETSET 작업은 만료되지 않은 타임 스탬프를 반환합니다. C4는 첫 번째 단계부터 다시 시작됩니다. C4가 앞으로 몇 초 동안 키를 설정하더라도 이것은 문제가되지 않습니다.

그러나 일부 사용자가 언급했듯이 UNIX 타임 스탬프를 만료로 사용하려면 클라이언트와 서버의 시간이 완벽하게 동기화되어야합니다. Redis에서 전역 / 분산 잠금을 만드는 더 나은 대안이 있습니까?

zavg

사용 SET대신에 SETNX. SETUNIX 타임 스탬프 값 대신 초 및 밀리 초 단위의 만료 시간 인수를 허용합니다.

이전 SETNX 기반 패턴은 역사적인 이유로 만 문서화되었습니다.

에서 SETNX 설명 :

참고 : Redis 2.6.12부터는 SET 명령을 사용하여 잠금을 획득하고 간단한 Lua 스크립트를 사용하여 잠금을 해제하는 훨씬 더 간단한 잠금 기본 요소를 만들 수 있습니다. 패턴은 SET 명령 페이지에 설명되어 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Powershell에서 생성 한 파일을 잠금 해제 / 언로드하는 방법은 무엇입니까?

분류에서Dev

C ++로 분산을 계산하는 방법은 무엇입니까?

분류에서Dev

Javascript를 사용한 Photoshop 스크립팅 : 부분적으로 잠긴 레이어의 잠금을 해제하는 방법은 무엇입니까?

분류에서Dev

Javascript를 사용한 Photoshop 스크립팅 : 부분적으로 잠긴 레이어의 잠금을 해제하는 방법은 무엇입니까?

분류에서Dev

KDE에서 10 분 화면 시간 초과 / 잠금을 비활성화하는 방법은 무엇입니까?

분류에서Dev

ATA 암호로 잠긴 하드 드라이브의 잠금을 해제하는 방법은 무엇입니까?

분류에서Dev

mpi로 백분율 비율을 계산하는 방법은 무엇입니까?

분류에서Dev

픽셀을 백분율로 계산하는 방법은 무엇입니까?

분류에서Dev

무작위로 생성 된 산술을 10 번 반복하는 방법은 무엇입니까? 이것은 지금까지 내 코드입니다

분류에서Dev

무작위로 생성 된 산술을 10 번 반복하는 방법은 무엇입니까? 이것은 지금까지 내 코드입니다

분류에서Dev

OWLAPI를 사용하여 분리 성을 효율적으로 계산하는 방법은 무엇입니까?

분류에서Dev

팬더와 적분을 사용하여 전력 값 이상으로 생성 된 에너지를 계산하는 방법은 무엇입니까?

분류에서Dev

열을 분할하여이 사전을 효율적으로 생성하는 방법은 무엇입니까?

분류에서Dev

`pathos.pools.ProcessPool`로 잠금을 사용하는 표준 방법은 무엇입니까?

분류에서Dev

Windows 8의 기본 로그인 / 잠금 화면을 변경하는 방법은 무엇입니까?

분류에서Dev

Ctrl + Z를 누른 후 자동으로 잠금을 제거하는 방법은 무엇입니까?

분류에서Dev

로그인 및 잠금 화면에서 사용자 사진을 제거하는 방법은 무엇입니까?

분류에서Dev

ssh-agent 잠금을 Windows 로그인에 고정하는 방법은 무엇입니까?

분류에서Dev

Python에서 분산 계산에 대한 0으로 NULL 값을 포함하는 방법은 무엇입니까?

분류에서Dev

BIOS가 소문자 만 허용하는 경우 대문자 암호로 ATA 암호 잠금 HDD의 잠금을 해제하는 방법은 무엇입니까?

분류에서Dev

루비에서 부분적으로 반복되는 순열을 생성하는 방법은 무엇입니까?

분류에서Dev

Laravel 쿼리 빌더에서 생성 된 날짜로 행을 계산하는 방법은 무엇입니까?

분류에서Dev

GNU 화면 : 분할 후 터미널을 자동으로 생성하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 랜덤 공분산 행렬을 생성하는 방법은 무엇입니까?

분류에서Dev

종속성 잠금 플러그인에서 해결 전략을 사용하기 위해 Gradle 분리 구성을 얻는 방법은 무엇입니까?

분류에서Dev

파이썬으로 재무 계산기를 구축하기 위해 백분율로 계산 공식을 작성하는 방법은 무엇입니까?

분류에서Dev

값을 합산하면서 DateTime을 연도와 월로 분할하는 방법은 무엇입니까?

분류에서Dev

XmlPullParser로 속성을 구문 분석하는 방법은 무엇입니까?

분류에서Dev

XmlPullParser로 속성을 구문 분석하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Powershell에서 생성 한 파일을 잠금 해제 / 언로드하는 방법은 무엇입니까?

  2. 2

    C ++로 분산을 계산하는 방법은 무엇입니까?

  3. 3

    Javascript를 사용한 Photoshop 스크립팅 : 부분적으로 잠긴 레이어의 잠금을 해제하는 방법은 무엇입니까?

  4. 4

    Javascript를 사용한 Photoshop 스크립팅 : 부분적으로 잠긴 레이어의 잠금을 해제하는 방법은 무엇입니까?

  5. 5

    KDE에서 10 분 화면 시간 초과 / 잠금을 비활성화하는 방법은 무엇입니까?

  6. 6

    ATA 암호로 잠긴 하드 드라이브의 잠금을 해제하는 방법은 무엇입니까?

  7. 7

    mpi로 백분율 비율을 계산하는 방법은 무엇입니까?

  8. 8

    픽셀을 백분율로 계산하는 방법은 무엇입니까?

  9. 9

    무작위로 생성 된 산술을 10 번 반복하는 방법은 무엇입니까? 이것은 지금까지 내 코드입니다

  10. 10

    무작위로 생성 된 산술을 10 번 반복하는 방법은 무엇입니까? 이것은 지금까지 내 코드입니다

  11. 11

    OWLAPI를 사용하여 분리 성을 효율적으로 계산하는 방법은 무엇입니까?

  12. 12

    팬더와 적분을 사용하여 전력 값 이상으로 생성 된 에너지를 계산하는 방법은 무엇입니까?

  13. 13

    열을 분할하여이 사전을 효율적으로 생성하는 방법은 무엇입니까?

  14. 14

    `pathos.pools.ProcessPool`로 잠금을 사용하는 표준 방법은 무엇입니까?

  15. 15

    Windows 8의 기본 로그인 / 잠금 화면을 변경하는 방법은 무엇입니까?

  16. 16

    Ctrl + Z를 누른 후 자동으로 잠금을 제거하는 방법은 무엇입니까?

  17. 17

    로그인 및 잠금 화면에서 사용자 사진을 제거하는 방법은 무엇입니까?

  18. 18

    ssh-agent 잠금을 Windows 로그인에 고정하는 방법은 무엇입니까?

  19. 19

    Python에서 분산 계산에 대한 0으로 NULL 값을 포함하는 방법은 무엇입니까?

  20. 20

    BIOS가 소문자 만 허용하는 경우 대문자 암호로 ATA 암호 잠금 HDD의 잠금을 해제하는 방법은 무엇입니까?

  21. 21

    루비에서 부분적으로 반복되는 순열을 생성하는 방법은 무엇입니까?

  22. 22

    Laravel 쿼리 빌더에서 생성 된 날짜로 행을 계산하는 방법은 무엇입니까?

  23. 23

    GNU 화면 : 분할 후 터미널을 자동으로 생성하는 방법은 무엇입니까?

  24. 24

    파이썬에서 랜덤 공분산 행렬을 생성하는 방법은 무엇입니까?

  25. 25

    종속성 잠금 플러그인에서 해결 전략을 사용하기 위해 Gradle 분리 구성을 얻는 방법은 무엇입니까?

  26. 26

    파이썬으로 재무 계산기를 구축하기 위해 백분율로 계산 공식을 작성하는 방법은 무엇입니까?

  27. 27

    값을 합산하면서 DateTime을 연도와 월로 분할하는 방법은 무엇입니까?

  28. 28

    XmlPullParser로 속성을 구문 분석하는 방법은 무엇입니까?

  29. 29

    XmlPullParser로 속성을 구문 분석하는 방법은 무엇입니까?

뜨겁다태그

보관