Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Schnittmenge von zwei oder mehr sortierten Mengen

Sie sollten zuerst prüfen, welche ZSET hat weniger Elemente mit ZCARD, klonen und trimmen Sie das kürzere.

Zweitens lassen Sie 2 Reste. Sie können denselben zusätzlichen ZSET wiederverwenden für eine schnellere Bereinigung.

Ich wollte auch DUMP und RESTORE für den Klon vorschlagen, aber für den Fall der sortierten Sätze ist ZUNIONSTORE tatsächlich viel schneller. Hier ist ein Timing von beiden für einen Satz mit 1 Million Elementen:

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"