通过批量RedisTemplate

时间:2017-02-01 08:12:38

标签: java spring redis

我在 spring boot应用程序中使用 RedisTemplate ,我可以使用singleKey进行阅读。

String valueJson = (String) redisTemplate.opsForValue().get(setKey(someId));

我现在有一个" someId"喜欢"列出someIds"我想获得所有ID的数据。当然我可以在列表上进行迭代并使用单独的键点击redis,但我不想要那个,而是我想提供整个列表来一次性获得响应。

请帮忙。

1 个答案:

答案 0 :(得分:6)

您需要使用流水线操作: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;
});

结果列表将包含您想要的所有内容。