我在我的 spring boot 应用程序 中使用 RedisTemplate 并且我能够使用 singleKey 进行读取。
String valueJson = (String) redisTemplate.opsForValue().get(setKey(someId));
我现在有一个“someId”列表,如“List someIds”,我想获取所有 ID 的数据。当然,我可以在列表上迭代并使用单独的键点击 redis,但我不想那样,相反我想提供整个列表以一次性获得响应。
请帮忙。
最佳答案
您需要使用流水线:https://redis.io/topics/pipelining
List<Object> results = redisTemplate.executePipelined(
new RedisCallback<Object>() {
public Object doInRedis(RedisConnection connection) throws DataAccessException {
StringRedisConnection stringRedisConn = (StringRedisConnection)connection;
for(String id:someIds)
stringRedisConn.get(id);
return null;
}
});
或者在 Java 8 中:
List<Object> results = redisTemplate.executePipelined((RedisCallback<Object>) connection -> {
StringRedisConnection stringRedisConn = (StringRedisConnection) connection;
someIds.forEach(id -> {
stringRedisConn.get(id);
});
return null;
});
结果列表将包含您想要的所有内容。
关于java - 批量从 Redis 中获取数据 RedisTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41974812/