Powinieneś najpierw sprawdzić, który ZSET ma mniej elementów z ZCARD, a sklonuj i przytnij krótszy.
Po drugie, zostawiasz 2 resztki. Możesz ponownie użyć tego samego pomocniczego ZSET aby mieć szybsze czyszczenie.
Chciałem również zasugerować DUMP i RESTORE dla klonu, ale w przypadku posortowanych zestawów ZUNIONSTORE jest w rzeczywistości znacznie szybszy. Oto czas obu dla zestawu 1M elementów:
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"