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

Intersección de dos o más conjuntos ordenados

Primero debe verificar qué ZSET tiene menos elementos con ZCARD, y clona y recorta el más corto.

En segundo lugar, estás dejando 2 sobras. Puede reutilizar el mismo auxiliar ZSET para tener una limpieza más rápida.

También quería sugerir DUMP y RESTORE para el clon, pero para el caso de conjuntos ordenados, ZUNIONSTORE es en realidad mucho más rápido. Aquí hay una sincronización de ambos para un conjunto de elementos de 1M:

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"