[REDIS] 레디 스 키에 대한 액세스를 차단 (ServiceStack)
REDIS레디 스 키에 대한 액세스를 차단 (ServiceStack)
나는 ServiceStack 레디 스 클라이언트를 사용하여 매우 일반적인 캐싱 시나리오입니다 제가 생각 구현하기 위해 노력하고있어 아직 나는이의 좋은 예를 찾는 어려움을 겪고 있어요.
하는 ASP.NET MVC 응용 프로그램에서, 우리는 외부 웹 서비스에 상대적으로 장기 실행 (및 계량) 전화를하고 일정 기간에 대한 결과를 캐시합니다. 캐시 구현에서는, 웹 서비스 호출이 완료 될 때까지 추가 (비싼) 호출을 방지하기 위해, 해당 키에 대한 추가 요청을 차단하는 것이 바람직하다.
그래서, 키 - 레벨 잠금을 구현하는 가장 좋은 방법은 무엇입니까? 합니까 레디 스 박스의 출력을 지원합니까? 우리는 분산 잠금 처리하지 않는 경우겠습니까 ServiceStack의 IRedisClient.AcquireLock이 잘 맞는, 또는 그것은 과잉이다? 아니면 내가 여기에 설명처럼 잠금 자신, 뭔가를 구현하는 것이 가장 좋은 것입니까?
사전에 감사합니다!
해결법
-
==============================
1.레디 스 내장 레디 스에 키가 될 때까지 클라이언트 연결을 차단하기 위해 아무 의미가없는, 비 블로킹 비동기 서버입니다.
레디 스 내장 레디 스에 키가 될 때까지 클라이언트 연결을 차단하기 위해 아무 의미가없는, 비 블로킹 비동기 서버입니다.
참고 : 레디 스 그러므로 어떤 잠금 당신은 레디 스를 포함하는 디자인으로 '분산'이다 구현, 원격없는 NoSQL 데이터 저장소입니다. ServiceStack의 AcquireLock 만 1 클라이언트 연결이 잠금을 가지고 있도록 레디 스의 원시 SETNX 잠금 의미를 사용하여 연결이 고정 될 때까지 차단 상태를 유지하고 있습니다 / 다른 모든 클라이언트는 지수 재시도 백 오프 승수 폴링을 사용하여 해제되었습니다.
폴링없이 분산 잠금을 구현하기 위해 당신은 잠금이 해제 된 것을 기다리는 고객에게 통지 SETNX + 레디 스의 펍 / 하위 지원의 조합을 사용하는 솔루션을 만드는 데 필요한 것입니다.
-
==============================
2.나는 글로벌 네트워크 뮤텍스로 레디 스를 사용하기위한 다음과 같은 패턴을 사용 :
나는 글로벌 네트워크 뮤텍스로 레디 스를 사용하기위한 다음과 같은 패턴을 사용 :
-
==============================
3.왜 당신이 잠금으로 원하는 키에 SETNX을 발행하지? 키가 잠금 / 설정할 수있는 경우는 1을 반환합니다. 그리고 그것은 이미 존재 0 경우에 따라서 잠금이 수행 할 수 없습니다. 특정 정보에 대한 http://www.redis.io/commands/setnx를 참조하십시오.
왜 당신이 잠금으로 원하는 키에 SETNX을 발행하지? 키가 잠금 / 설정할 수있는 경우는 1을 반환합니다. 그리고 그것은 이미 존재 0 경우에 따라서 잠금이 수행 할 수 없습니다. 특정 정보에 대한 http://www.redis.io/commands/setnx를 참조하십시오.
from https://stackoverflow.com/questions/14387802/block-access-to-redis-key-servicestack by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스 2.6.11에서 구독 취소 명령을 사용하는 방법 (0) | 2020.01.21 |
---|---|
[REDIS] 동시에 여러 프로그램 레디 스 동작은 읽기 / 일을 같은 해시 키 델 (0) | 2020.01.21 |
[REDIS] 레디 스의 리더를위한 유일한 득점 (0) | 2020.01.21 |
[REDIS] 파이프 라인 배수로 ServiceStack를 사용하여 레디 스에 명령을 읽는 방법 (0) | 2020.01.21 |
[REDIS] 우리는 hiredis에 의해 레디 스에서 키의 값으로 C의 int 배열을 설정할 수 있습니까? (0) | 2020.01.21 |