2012-02-14 18 views
8

Sto lavorando con due serie ordinate in Redis. A un certo punto ho bisogno di scadere set 1, rinominare set 2 a set 1. Ciò rimuove set 2. Devo quindi duplicare set 1 per ricreare set 2 come replica. È possibile?È possibile duplicare un set ordinato redis?

Ho individuato zunionstore nella documentazione Redis ma non sono sicuro che sia quello che sto cercando.

risposta

14

Infatti, zunionstore sembra funzionare correttamente. Fa un'unione tra gli insiemi specificati e memorizza il risultato. Se fornisci solo un set, ne farà una copia. Almeno, ho appena provato e sembra funzionare:

zadd foo 1 a 
zadd foo 2 b 
zunionstore bar 1 foo 
zrange bar 0 -1 
1) "a" 
2) "b" 
+2

Grande, grazie Linus. Lo sto facendo con la gemma Redis Ruby e sembra che la sintassi sia leggermente diversa da quella che mi aspettavo. Ho finito per farlo funzionare in IRB con: 'REDIS.zunionstore ('bar', [1, 'foo'])'. La tua risposta è esattamente la conferma che cercavo. – Pete

+0

Fantastico! Ho imparato anche qualcosa di nuovo, terrò a mente questo! –

+3

Non c'è un modo più efficiente per copiare? 'zunionstore' è' O (N) + O (M log (M)) 'secondo i documenti. – Mahn

Problemi correlati