sql >> Database >  >> NoSQL >> Redis

Hoe DIFF op gesorteerde set te krijgen

Opmerking:ik neem aan dat je sadd disabled two bedoelt

Zoals je hebt ontdekt, SDIFF werkt niet op gesorteerde sets - dat komt omdat het definiëren van het verschil tussen gesorteerde sets niet triviaal is.

Wat je zou kunnen doen is eerst een tijdelijke set maken met ZUNIONSTORE en de scores van de kruising op 0 zetten. Doe dan een bereik met uitzondering van de 0, bijvoorbeeld:

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. ClusterControl - Alle hoogtepunten en verbeteringen van functies vanaf 2017

  2. MongoDB - onderscheiden met query gebruikt geen indexen

  3. node.js slaat objecten op in redis

  4. Mongoose findOneAndUpdate en upsert retourneert geen fouten, geen documenten beïnvloed