AWS Elastic キャッシュ (redis) からすべてのキーをフェッチする必要があるユースケースがあります。ネットワーク呼び出しを回避するために multiGet を使用することを考えましたが、並列リクエストを送信する場合と比較してより多くの時間がかかります。詳細は以下のとおりです
私はspringboot + jedisを使用しており、redisに5000個のキーがあります
redisTemplate.opsForValue().get(key))
// taking 100 ms
return redisTemplate.opsForValue().multiGet(keys);
// All 5000 , taking around 24 second
500 にバッチ処理し、約 5 秒かかる 10 スレッドのスプリング非同期タスクを使用して並列送信します
return redisTemplate.opsForValue().multiGet(batchedkeys);
したがって、redis には単一のワーカーと複数の I/O スレッドがあることをここで読んだので、すべてのキーをフェッチするための最良の方法を理解できません。したがって、複数のキーを使用した単一のリクエストは、ネットワーク呼び出しが減少するため、単一のキーを使用した複数のリクエストと比較して、全体的な応答時間が短くなります。私の仮定が間違っている場合は修正してください