> 데이터 베이스 > Redis > Redis를 사용하여 분산 잠금을 구현하는 방법

Redis를 사용하여 분산 잠금을 구현하는 방법

(*-*)浩
풀어 주다: 2019-11-29 10:25:53
원래의
4538명이 탐색했습니다.

Redis를 사용하여 분산 잠금을 구현하는 방법

분산 잠금은 실제로 분산 시스템을 제어하여 공유 리소스를 질서있게 운영하고 상호 배제를 통해 일관성을 유지하는 것으로 이해될 수 있습니다.

부적절한 예를 들자면: 공유 리소스는 다양한 책이 들어 있는 집이고, 분산 시스템은 책을 읽기 위해 집에 들어가고 싶어하는 사람들이고, 분산 잠금 장치라고 가정해 보겠습니다. 보장입니다. 집에는 문이 하나 뿐이고 한 번에 한 사람만 들어갈 수 있으며 문에는 열쇠가 하나뿐입니다. (추천 학습: Redis 동영상 튜토리얼)

redis를 사용하여 분산 잠금 구현                                                                                         🎜# redis 명령을 사용하여 키 값 NX EX max-lock-time 설정 잠금 구현

redis 명령 EVAL을 사용하여 잠금 해제 구현

잠금: # 🎜🎜#

Jedis jedis = new Jedis("127.0.0.1", 6379);
 
 private static final String SUCCESS = "OK";
 
 /**
 
  * 加锁操作
 
  * @param key 锁标识
 
  * @param value 客户端标识
 
  * @param timeOut 过期时间
 
  */
 
 public Boolean lock(String key,String value,Long timeOut){
 
     String var1 = jedis.set(key,value,"NX","EX",timeOut);
 
     if(LOCK_SUCCESS.equals(var1)){
 
         return true;
 
     }
 
     return false;
 
 }
로그인 후 복사

해석:

잠금 작업: jedis.set(key,value, "NX", "EX", timeOut) [원자 보장 잠금 동작]

key는 잠금의 식별로 redis의 키 값이며, 여기서는 키-값만 일치하는 사람만이 권한을 갖습니다. 잠금 삭제 [보안 보장]

교착 상태가 발생하지 않도록 timeOut을 통해 만료 시간을 설정 [교착 상태 방지]

NX, EX는 무엇입니까 평균?

NX: 키가 존재하지 않는 경우에만 작업이 수행됩니다.

EX: 키의 만료 시간을 초로 설정합니다. , 구체적으로 시간은 다섯 번째 매개변수에 의해 결정됩니다. #🎜🎜 #luaScript 이 문자열은 lua 스크립트입니다. 즉, 키에 따라 얻은 값이 들어오는 값과 같으면 del을 실행하고, 그렇지 않으면 0을 반환합니다. [보안 보장] #🎜🎜 #jedis.eval (String, list, list); 이 명령은 lua 스크립트를 실행하는 명령입니다. KEYS 집합은 두 번째 매개 변수이고 ARGV 집합은 세 번째 매개 변수입니다. [잠금 해제를 보장하는 원자적 연산]

위의 내용은 Redis를 사용하여 분산 잠금을 올바르게 구현하는 방법이지만 잠금 만료 시간을 적절한 값으로 설정해야 한다는 작은 결함이 있으며 이는 실제로 비즈니스 시나리오에 따라 고려해야 합니다.

Redis 관련 기술 기사를 더 보려면

Redis 시작 튜토리얼

열을 방문하여 알아보세요!

위 내용은 Redis를 사용하여 분산 잠금을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿