2010-12-17 10 views
18

Soy un recién llegado a Redis y estoy buscando ayuda específica sobre conjuntos. Para dar algunos antecedentes: estoy construyendo una aplicación web que consiste en un gran número de cartas que cada una tiene un conjunto de cartas individuales con identificadores únicos. Quiero que los usuarios tengan un conjunto de 5 cartas extraídas al azar de un mazo específico.Buscando un comando copiar conjunto (o alternativa) en Redis

Mi plan es tener todos los identificadores de tarjetas de un mazo determinado almacenados como un conjunto en Redis; luego quiero usar la función SPOP para dibujar cartas individuales y eliminarlas del conjunto para que no se dibujen nuevamente dentro de esa mano. Parecería lógico hacer esto copiando el 'conjunto maestro' de identificadores de tarjeta en un nuevo conjunto temporal, realizando la copia emergente en la copia y luego eliminando el conjunto copiado cuando haya terminado.

Pero: no puedo encontrar ninguna función de Redis para ordenar una copia establecida - lo más cercano que puedo ver sería crear también un conjunto vacío y luego 'unir' el conjunto vacío y la 'copia maestra' del establecer en un nuevo conjunto (si es temporal) con SUNIONSTORE, pero que parece hacky. Supongo que una alternativa sería copiar los elementos establecidos en mi 'lenguaje de host' (node.js) y luego insertarlos manualmente en un nuevo conjunto de Redis, pero esto también parece torpe. Probablemente haya una tercera opción mejor que yo ni siquiera haya pensado.

¿Estoy haciendo algo mal? ¿No estoy 'recibiendo' Redis, o el conjunto de comandos todavía está un poco inmaduro?

Respuesta

61
redis> sadd mydeck 1 
(integer) 1 
redis> sadd mydeck 2 
(integer) 1 
redis> sadd mydeck 3 
(integer) 1 
redis> smembers mydeck 
1) "1" 
2) "2" 
3) "3" 
redis> sunionstore tempdeck mydeck 
(integer) 3 
redis> smembers mydeck 
1) "1" 
2) "2" 
3) "3" 
redis> smembers tempdeck 
1) "1" 
2) "2" 
3) "3" 

¡Diviértete con Redis! Salvatore

+1

Gracias @antirez, esto funcionó muy bien. –

+0

sí, sunionstore realmente agradable. – hahakubile

Cuestiones relacionadas