java - 批量从 Redis 中获取数据 RedisTemplate

标签 java spring redis

我在我的 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/

相关文章:

javascript - xhtmlrenderer xhtml 到 pdf 字体问题,甚至不能使用字体系列 : Verdana;

Java 依赖类无法通过 System.getProperty() 访问属性

java - 如何处理spring Controller 参数类型异常

php - Symfony2 Redis Validator,字符串而不是 ClassMetadata

c# - C# 的 Redis 替代方案

Java:函数可以返回调用类和方法名称的任何简单方法?

java - JApplet 将启动但未初始化

java - 如何根据每秒请求数自动设置 jmeter 线程数(用户数)?

java - 项目 react 堆文档

php - Laravel PSR-16 缓存。适配\Predis\Client 到\Redis?