2017-10-09 2 views
-2

내 세트의 모든 키를 반복하려고하지만 어떻게 작동하는지 잘 모르겠습니다. 집합을 반복하여 모든 키를 나열하려면 어떻게합니까?

내가이 같은 세트를 가지고 말 :

SADD myset "hello" "world" 

내 세트 지금 2 키가 있습니다.

루프를 통해 모든 값을 가져 오거나 페이지를 넘길 수있는 방법은 무엇입니까?

나는이 시도 :

$redis.scan(0, match:"myset") 

을하고 나는이 돌아 오기 :

2.3.3 :020 > $redis.scan(0, match:"myset") 
=> ["0", ["myset"]] 

내가 그 결과를 수행하는 것과 같은 혼란 스러워요을? 당신이 찾고 있다면 통해 스캔하고 SSCAN 변형을 사용할 필요가 다음과 일치하는

$redis.smembers('myset') 

:

$redis.sscan('myset', 0, match: '...') 
+0

나는 '돈 – Maxence

+0

먼저 Ruby를 할 때'$ redis'와 같은 전역 변수를 피하십시오. 그것들은 일반적으로 전역 변수와 마찬가지로 커다란 방식으로 여러분에게 역효과를 줄 수 있습니다. '@ redis'와 같은 인스턴스 변수 나 핸들을 리턴하는 메소드를 선택하십시오. – tadman

답변

2

그냥 모든 세트 구성원을 얻기 위해 SMEMBERS 명령을 사용하여 redis 알아. 하지만 아마 n 번 반복 할 수 있습니다. n은 집합의 카디널리티입니다 (scard 명령 인 것 같습니다). 루비 루프는`nx do do`입니다. 그렇다면 redis.scard ("myset"). to_i.times do ... end`는 매우 추측입니다.
+0

내 세트에 수천 개의 키가있을 수 있으므로 스캔을 사용하고 싶습니다. – Blankman

+0

그것이 바로'SSCAN'의 목적입니다. – tadman