redisを使用すると、データ構造全体を取得するコマンドが多数あります (リストの場合はLRANGE、セットの場合はSMEMBERS、ソート済みセットの場合はZRANGE 、ハッシュの場合はHGETALL )。
単一のコマンドで複数のアイテムを挿入するメソッド ( HMSET )があるのはハッシュだけです。
私が見たすべての例は、一度に 1 つの項目をリスト ( RPUSHまたはLPUSHを介して) またはセット ( SADD / ZADDを介して) に追加することを示しています。
私が解決したいより具体的な問題は、データベース ID を含むリストとソート済みセットを作成することです。これらのリストは各ユーザーに固有であり、数百から数千の ID が含まれています。
それらは通常、データベース クエリから収集され、メモリ内で少し処理されてから、(リスト) をページ分割するか、セット ベースの操作を実行してサブセット (セットと並べ替えられたセット) を取得するために、redis に格納されます。
現在、リストを繰り返し処理し、各要素に対して適切な add メソッドを呼び出しています。これには、ネットワーク上で複数のリクエストを作成し、毎回キーを繰り返すという欠点があります。
redis> RPUSH employee:ids 1000
(integer) 1
redis> RPUSH employee:ids 1001
(integer) 2
redis> RPUSH employee:ids 1002
(integer) 3
redis> RPUSH employee:ids 1003
(integer) 4
redis> del employee:ids
(integer) 1
MULTIとEXECでトランザクションを使用すると、それを単一の要求に変えるのに役立つと思いますが、繰り返されるキーには役立ちません。
redis> MULTI
OK
redis> RPUSH employee:ids 1000
QUEUED
redis> RPUSH employee:ids 1001
QUEUED
redis> RPUSH employee:ids 1002
QUEUED
redis> RPUSH employee:ids 1003
QUEUED
redis> RPUSH employee:ids 1004
QUEUED
redis> EXEC
1. (integer) 1
2. (integer) 2
3. (integer) 3
4. (integer) 4
5. (integer) 5
1 つのコマンドで、または毎回キーを繰り返さずにリスト/セットに要素を追加できるようにするために、私が見逃しているものはありますか?
それが重要な場合(または、JVMから使用できる別のライブラリがあれば)、jedisクライアントライブラリも使用しています。