2010-12-17 4 views
18

Je suis un nouveau venu à Redis et je suis à la recherche d'aide spécifique autour des ensembles. Pour donner un peu d'arrière-plan: Je construis une application Web qui se compose d'un grand nombre de jeux de cartes qui ont chacun un ensemble de cartes individuelles avec des identifiants uniques. Je veux que les utilisateurs aient un ensemble de 5 cartes tirées au sort pour un deck spécifique.Vous cherchez une commande de jeu de copie (ou alternative) dans Redis

Mon plan est d'avoir tous les identifiants de cartes d'un paquet donné stockés dans Redis; Ensuite, je veux utiliser la fonction SPOP pour dessiner des cartes individuelles et les retirer de l'ensemble afin qu'elles ne soient plus dessinées dans cette main. Il semblerait logique de le faire en copiant le «jeu de cartes» du jeu d'identifiants de cartes dans un nouvel ensemble temporaire, en effectuant le popping sur la copie, puis en supprimant le jeu copié lorsque j'ai terminé. Mais: Je ne trouve pas de fonction Redis pour commander une copie fixe - la chose la plus proche que je puisse voir serait de créer aussi un ensemble vide, puis de 'joindre' l'ensemble vide et la 'copie originale' du mettre dans un nouvel ensemble (si temporaire) avec SUNIONSTORE, mais cela semble hacky. Je suppose qu'une alternative serait de copier les éléments du set dans ma 'langue hôte' (node.js), puis d'insérer manuellement les éléments dans un nouvel ensemble Redis, mais cela semble aussi maladroit. Il y a probablement une meilleure troisième option à laquelle je n'ai même pas pensé. Est-ce que je fais quelque chose de mal - est-ce que je ne reçois pas Redis, ou est-ce que le jeu de commandes est encore un peu immature?

Répondre

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" 

Amusez-vous avec Redis! Salvatore

+1

Merci @antirez, cela a bien fonctionné. –

+0

oui, sunionstore vraiment sympa. – hahakubile

Questions connexes