Redis
 sql >> Base de données >  >> NoSQL >> Redis

Intersection de deux ou plusieurs ensembles triés

Vous devez d'abord vérifier quel ZSET a moins d'éléments avec ZCARD, et clonez et coupez le plus court.

Deuxièmement, vous laissez 2 restes. Vous pouvez réutiliser le même ZSET auxiliaire pour avoir un nettoyage plus rapide.

Je voulais également suggérer DUMP et RESTORE pour le clone, mais pour le cas des ensembles triés, ZUNIONSTORE est en fait beaucoup plus rapide. Voici un timing des deux pour un ensemble d'éléments de 1 million :

1) 1) (integer) 14
   2) (integer) 1444165498
   3) (integer) 936762
   4) Complexity info: N:1000000,M:1000000
   5) 1) "ZUNIONSTORE"
      2) "temp3"
      3) "1"
      4) "temp1"
      5) "WEIGHTS"
      6) "1"
2) 1) (integer) 13
   2) (integer) 1444165421
   3) (integer) 3166360
   4)
   5) 1) "evalsha"
      2) "48286113cfe4b389d516e98646e5f4e086decc34"
      3) "2"
      4) "temp1"
      5) "temp2"
      6) "0"