我有一个需要从aws弹性缓存(redis)中获取所有密钥的用例,我想过使用multiget来避免网络调用,但是与发送并行请求相比,下面的细节是花费更多的时间
我用的是springboot+绝地,我在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线程。因此,由于减少了网络调用,与使用单个密钥的多个请求相比,使用多个密钥的单个请求的响应时间总体上应该更短。如果我的假设是错误的,请纠正我
暂无答案!
目前还没有任何答案,快来回答吧!