Redis
 sql >> Datenbank >  >> NoSQL >> Redis

So erhalten Sie DIFF in einem sortierten Satz

Hinweis:Ich nehme an, Sie meinten sadd disabled two

Wie Sie herausgefunden haben, SDIFF funktioniert nicht mit sortierten Mengen - das liegt daran, dass es nicht trivial ist, den Unterschied zwischen sortierten Mengen zu definieren.

Was Sie tun könnten, ist zuerst ein temporäres Set mit ZUNIONSTORE zu erstellen und die Werte der Schnittmenge auf 0 zu setzen. Dann einen Bereich ohne 0 erstellen, z. B.:

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"