2010-12-17 16 views
18

私はRedisの新人です。私はセットに関するいくつかの具体的なヘルプを探しています。いくつかの背景を述べる:私はユニークなIDを持つ個々のカードのセットを持つ多数のカードデッキで構成されるWebアプリケーションを構築しています。私は、特定のデッキから5枚のカードを無作為に描いてもらいたいと思っています。Redisでコピーセットコマンド(または代替)を探しています

私の計画は、特定のデッキのすべてのカードIDをRedisのセットとして保存することです。 SPOP関数を使用して個別のカードを描画し、それらをセットから削除して、そのカードがその手の中で再び描画されないようにしたいと考えています。カードIDのデッキの「マスターセット」を新しい一時セットにコピーし、コピーをポップしてからコピーしたセットを削除することで、これを行うのは意味があるようです。

しかし、私は設定されたコピーをコマンドするRedis関数を見つけることができません - 私が見ることができる最も近いものは、空のセットを作成してから空のセットと ' SUNIONSTOREを使って新しい(一時的であれば)セットにしましたが、それはうんざりしているようです。代わりに、設定したアイテムを自分の「ホスト言語」(node.js)にコピーしてから、手動で新しいRedisセットにアイテムを挿入することも考えられますが、これも厄介なようです。おそらく私が考えていないより良い第3の選択肢があります。

私は何か間違っているのですか?私はレディスを得ていないのですか、まだコマンドセットは未熟ですか?

答えて

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" 

Redisを楽しんでください! Salvatore

+1

ありがとうございました@antirez、これはうまくいきました。 –

+0

はい、sunionstoreは本当にいいです。 – hahakubile

関連する問題