2012-05-15 4 views
3

회원이 있습니다. 예를 들어, 20 개의 대학 이름을 가진 "college"라는 세트.redis 특정 구성원을 집합에서 제거합니다.

어떻게 하위 집합 만 삭제합니까? 예 : 세트에서 선택한 10 개 단과 세트?

내가 v2.4.5

여기 http://redis.io/commands/srem을 발견 한 문서의 레디 스 서버를 실행하고 우리가 레디 스> = 2.4에 대해 여러 키를 삭제할 수 있지만 여전히이를 달성하는 방법을 알아낼 수 없다고 말했다.

나는 RubyonRails 함께 일하고 난

> $redis 
    #<Redis client v2.2.2 connected to redis://localhost:6379/0 (Redis v2.4.5)> 
> ruby-1.9.3-p0 :011 > $redis.sadd("college","champion1") 
=> true 
ruby-1.9.3-p0 :012 > $redis.sadd("college","champion2") 
=> true 
ruby-1.9.3-p0 :013 > $redis.sadd("college","champion3") 
=> true 
ruby-1.9.3-p0 :014 > $redis.sadd("college","champion4") 
=> true 
ruby-1.9.3-p0 :015 > $redis.sadd("college","champion5") 
=> true 
ruby-1.9.3-p0 :016 > $redis.smembers("college") 
=> ["champion1", "champion2", "champion3", "champion4", "champion5" 
ruby-1.9.3-p0 :017 > $redis.srem("college","champion1" "champion2") 
=> false 
ruby-1.9.3-p0 :018 > $redis.smembers("college") 
=> ["champion1", "champion2", "champion3", "champion4", "champion5"] 

회원 "champion1"와 "champion2"이 세트에서 제거되지 않습니다 내 레일 콘솔에서 그것을했다.

나는 redis (2.2.2 ruby) 보석을 설치했습니다.

답변

3

는 그에게 그것을 할 수있는 간단한 방법을 지원하지 않습니다 당신은 sdiff 또는 sdiffstore를 사용할 수 있습니다. 제거 할 구성원 집합을 만들고 집합의 차이를 얻은 다음 결과를 원래 집합에 다시 저장합니다.

다소 복잡 할 수도 있지만 작동해야합니다.

+0

와우 나는 이런 식으로 생각하지 않았다 ... 엄지 손가락. 클라이언트 라이브러리에서 제공 할 때까지 사용하겠습니다. – Gagan

3
% telnet localhost 6379 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 

... 

sadd myset 1 2 3  
:3 
srem myset 1 3 
:2 
3

죄송합니다.이 문제는 레일스에서만 발생합니다.

Redis 보석 버전 2.2.2를 설치했는데 여러 개의 키를 삭제할 수 없습니다. 그러나 redis 서버> = 2.4에 대해 redis-cli에 입장하면 얻을 수 있습니다. 클라이언트 라이브러리 감안할 때

[email protected]:~/projects/test_proj [master]$ redis-cli 
redis 127.0.0.1:6379> smembers "college" 
1) "champion1" 
2) "champion2" 
3) "champion3" 
4) "champion4" 
5) "champion5" 
redis 127.0.0.1:6379> srem "college" "champion1" "champion2" 
(integer) 2 
redis 127.0.0.1:6379> smembers "college" 
1) "champion3" 
2) "champion4" 
3) "champion5" 
redis 127.0.0.1:6379> exit 
관련 문제