sql >> Base de Datos >  >> NoSQL >> Redis

Cómo obtener DIFF en un conjunto ordenado

Nota:Supongo que te refieres a sadd disabled two

Como habrás descubierto, SDIFF no opera en conjuntos ordenados, eso se debe a que definir la diferencia entre conjuntos ordenados no es trivial.

Lo que podría hacer es primero crear un conjunto temporal con ZUNIONSTORE y establecer las puntuaciones de la intersección en 0. Luego haga un rango que excluya el 0, por ejemplo:

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"