Redis
 sql >> Database >  >> NoSQL >> Redis

Intersezione di due o più insiemi ordinati

Dovresti prima controllare quale ZSET ha meno elementi con ZCARD e clona e ritaglia quello più corto.

Secondo, stai lasciando 2 avanzi. Puoi riutilizzare lo stesso ZSET ausiliario per una pulizia più rapida.

Volevo anche suggerire DUMP e RESTORE per il clone, ma per il caso dei set ordinati ZUNIONSTORE è in realtà molto più veloce. Ecco una tempistica di entrambi per un set di elementi da 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"