Redis
 sql >> Database >  >> NoSQL >> Redis

Come ottenere DIFF su un set ordinato

Nota:presumo tu intenda sadd disabled two

Come hai scoperto, SDIFF non funziona su insiemi ordinati, questo perché definire la differenza tra insiemi ordinati non è banale.

Quello che potresti fare è prima creare un set temporaneo con ZUNIONSTORE e impostare i punteggi dell'intersezione su 0. Quindi eseguire un intervallo escluso lo 0, ad esempio:

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"