2015-01-14 1 views
2

2 개의 큰 세트 교집합의 길이 (SCARD)가 필요합니다.Redis : 중간 세트를 저장하지 않고 SINTER 결과의 SCARD 찾기

그래서 이것은 내가 원하는 것을 달성 :

세트가 큰, 그래서 중간 값을 저장하지 않으 그러나
> SINTERSTORE intermediate s:1 s:2 
> SCARD intermediate 

. 개념적으로 내가 원하는 :

> SCARD (SINTER s:1 s:2) 

단일 명령으로이를 수행하는 방법은 아마도 Lua 스크립팅일까요? 또는 내 응용 프로그램 언어로 스크립트를 작성하고 완료되면 중간 값을 삭제하는 것이 가장 좋습니다. 예 : python과 redis-py를 사용하여 :

답변

4

Redis는 중첩 된 명령을 수행하지 않으므로 개념 버전은 필요성을 설명하는 데 도움이되지만 지원되지 않습니다.

중간 값 접근 방식을 사용하는 것이 좋지만 파이프 라이닝 대신 트랜잭션 (MULTI/EXEC)을 사용하여 교차, 카디널리티 및 삭제 작업을 래핑하는 것이 좋습니다.

+1

내 의견으로는. 'redis-py'에서'MULTI' /'EXEC'에 해당하는 것이 파이프 라인 객체의 기능에 실제적으로 포함되어 있음을 주목하십시오 (이 목적을 위해'multi'와'execute'라는 메소드가 있습니다). – rchang

+0

@rchang 감사합니다! RTFMing 후 redis-py의 파이프 라인은 기본적으로 트랜잭션입니다 #LearnSomethingNewEveryDay :) –

+0

감사합니다. 나는 파이프 라인 접근법을 사용할 것이다. –