効率はネットワークコールが少ないです vsより多くのデータ 。 Redisのデータはブロブ化されるだけで、ほとんどの場合、単一のAPI呼び出しがredisサーバー操作と1:1でマッピングされます。つまり、パフォーマンスへの影響は、リモートサーバーのメモリからjsonデータセットblobをダウンロードし、クライアントで逆シリアル化するだけであると考えることができます。これが事実上すべてです。
GetAll()などの一部のAPIでは、2つの呼び出しが必要です。1つはエンティティセット内のすべてのIDをフェッチし、もう1つはそれらのIDを持つすべてのレコードをフェッチします。 Redisクライアントのソースコードは非常に親しみやすいので、何が起こっているのかを正確に確認することをお勧めします。
カテゴリは3つしかないため、サーバーでフィルタリングしようとして節約できる余分なデータはそれほど多くありません。
したがって、オプションは基本的に次のとおりです。
- エンティティデータセット全体をダウンロードし、クライアントでフィルタリングします
- カテゴリ>IDからカスタムインデックスマッピングを維持する
- より高度な機能:サーバー側のLUA操作を使用して、サーバー側のフィルタリングを適用します(Redis 2.6が必要です)