我有一个用例,我需要从 AWS 弹性缓存(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 个并使用 spring asyc 任务并行发送,10 个线程大约需要 5 秒
return redisTemplate.opsForValue().multiGet(batchedkeys);
所以我无法理解获取所有密钥的最佳方法是什么,因为我在这里读到redis 有单个工作线程和多个 I/O 线程。因此,由于减少了网络调用,与具有单个键的多个请求相比,具有多个键的单个请求总体上应该具有更少的响应时间。如果我的假设是错误的,请纠正我