2014-11-02 6 views
5

मैं एक क्रमबद्ध सेट से अधिक भारित तत्व कैसे प्राप्त करूं, लेकिन किसी अन्य सेट (या सूची या हैश) में पाए गए लोगों को छोड़कर।क्रमबद्ध सेट पर डीआईएफएफ कैसे प्राप्त करें

>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 

मेरी एकमात्र विकल्प से तत्वों प्राप्त करने के लिए है हल कर एक-एक करके और "अक्षम" आइटम की सूची से तुलना सेट? सर्वर पर इतने सारे लेनदेन की वजह से यह बहुत धीमी नहीं होगी?

यहां दृष्टिकोण क्या है?

उत्तर

17

नोट: - जो है क्योंकि क्रमबद्ध सेट के बीच अंतर को परिभाषित करने तुच्छ नहीं है मैं तुम्हें sadd disabled two

मतलब है कि आप बाहर मिल गया है, SDIFF क्रमबद्ध सेट पर काम नहीं करता है के रूप में मानते हैं।

क्या आप पहली बार ZUNIONSTORE साथ एक अस्थायी सेट बना सकते हैं और 0 पर एक दूसरे को काटना के स्कोर सेट किया गया है कर सकता है तो फिर 0

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

कूल चाल, Itamar को छोड़कर, उदा .: एक सीमा है! – djanowski

+0

@djanowski धन्यवाद :) #RedisConf 2016 पर फिर से मिलने की उम्मीद है! –

संबंधित मुद्दे