Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Como obter DIFF no conjunto ordenado


Nota:suponho que você quis dizer sadd disabled two

Como você descobriu, SDIFF não opera em conjuntos ordenados - isso porque definir a diferença entre conjuntos ordenados não é trivial.

O que você pode fazer é primeiro criar um conjunto temporário com ZUNIONSTORE e definir as pontuações da interseção para 0. Em seguida, faça um intervalo excluindo o 0, por exemplo:
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"