2014-11-02 25 views
5

Ağırlıklı öğelerin sıralanan kümeden nasıl elde edilir, ancak başka bir kümede bulunanlar (veya liste veya karma) dışında.Sıralanan kümede DIFF nasıl elde edilir

>zadd all 1 one 
>zadd all 2 two 
>zadd all 3 three 
>sadd disabled 2 
>sdiff all disabled 

(error) WRONGTYPE Operation against a key holding the wrong kind of value 

benim tek seçenek öğeleri elde etmektir mı tarafından bire bir olarak ve "özürlü" öğeler listesine karşılaştırmak set sıralanmış? Bir sunucuya çok fazla işlem yapılmasından dolayı bu çok yavaş olmaz mıydı?

Buradaki yaklaşım nedir?

cevap

17

Not: - sıralanmış setlerde arasındaki farkı belirleyen önemsiz değil çünkü yani ben, SDIFF sıralanmış setlerde çalışmaz öğrendim olarak,

sadd disabled two samimiydim varsayalım.

Sonra ör .:

127.0.0.1:6379> ZADD all 1 one 2 two 3 three 
(integer) 3 
127.0.0.1:6379> SADD disabled two 
(integer) 1 
127.0.0.1:6379> ZUNIONSTORE tmp 2 all disabled WEIGHTS 1 0 AGGREGATE MIN 
(integer) 3 
127.0.0.1:6379> ZREVRANGEBYSCORE tmp +inf 1 WITHSCORES 
1) "three" 
2) "3" 
3) "one" 
4) "1" 
+1

Serin hile Itamar 0 hariç bir dizi yapmak Önce neyi ZUNIONSTORE ile geçici bir set oluşturmak ve 0'a Bilgisayar'ın puanları ayarlanır yapabilirdi! – djanowski

+0

@djanowski teşekkürler :) #RedisConf 2016'da tekrar buluşmayı umuyoruz! –

İlgili konular