ServiceStack.Redisクライアントでは、or GetValues
(GetValuesMap
文字列と T API の両方が利用可能) を使用して、1 回の呼び出しで複数の値をフェッチ ( MGETを使用) できます。モデルにIdがあるか、既存のキーとその値の辞書を返すGetValues
場合に検出できる既存のアイテムのみが返されます。GetValuesMap
これにより、欠落しているすべての ID を特定してデータベースから取得できます。とにかく Redis から既存の値を取得するだけの場合は、1 回の呼び出しですべての値を取得して既存のキーを特定できるため、これが最適な戦略です。
代替の「シングル コール」オプション
パイプラインまたはトランザクションを使用する
なんらかの理由で、キーを取得せずに本当に Redis 内のキーの存在を確認したい場合は、トランザクションまたはパイプライン (どちらもパイプライン化されています) を使用して、1 つのソケット書き込みで Redis に送信される複数の操作をキューに入れることができます。これはRedisStackOverflowデモからのこの例で、単一のバッチで送信および実行される30 の操作をキューに入れます。
LUA スクリプトを使用する
Redis >v2.5x を使用している場合は、 Redis のサーバー側 LUA サポートを使用して複合操作を作成および実行できます。ServiceStack.Redis クライアントのIRedisClientからこれらの API を使用して、サーバー側の LUA スクリプトを実行できます。
string GetEvalStr(string body, int numOfArgs, params string[] args);
int GetEvalInt(string body, int numOfArgs, params string[] args);
List<string> GetEvalMultiData(string body, int numOfArgs, params string[] args);