使用Redisson获取Redis需要时间

时间:2018-11-14 11:17:52

标签: java concurrency redis redisson

我有一个场景,应用程序需要从每个请求的Redis获取操作大约80次。当我在该应用程序上遇到1个请求时,它在不到1秒的时间内给出了响应,但是当请求大小增加到100个时,redissonClient开始表现缓慢,大约需要13秒来获取250条记录。

我是Redis的新手,不确定这是否是默认值。尽管我在一篇文章中发现说Redis可以在1个节点上的1秒内处理数百万次操作。我们的redis服务器当前在1个节点上运行。

以下是redis配置:

{
"singleServerConfig": {
    "idleConnectionTimeout": 10000,
    "pingTimeout": 1000,
    "connectTimeout": 10000,
    "timeout": 2000,
    "retryAttempts": 3,
    "retryInterval": 1500,
    "reconnectionTimeout": 2000,
    "failedAttempts": 3,
    "password": null,
    "subscriptionsPerConnection": 5,
    "clientName": null,
    "address": "redis://172.18.17.207:6379",
    "subscriptionConnectionMinimumIdleSize": 1,
    "subscriptionConnectionPoolSize": 50,
    "connectionMinimumIdleSize": 32,
    "connectionPoolSize": 100,
    "database": 0,
    "dnsMonitoringInterval": 5000
},
"threads": 128,
"nettyThreads": 128,
"codec": null,
"useLinuxNativeEpoll": false
}

以下是我在启动时实例化Redisson Client的方式:

try {
        Config config = Config.fromJSON(CommonConstants.REDIS_SINGLE_CONFIG_JSON_FILE);
        redisClient = Redisson.create(config);
    } catch (IOException e) {
        log.error(null, "Error establishing connection to Redis Cluster!", e);
    }

下面是我如何获取记录:

public List<Map<String, String>> fetch(List<String> ids) {
    return ids.stream().map(id -> {
        Map<String, String> m = redisClient.getMapCache(id);
        return m;
    }).collect(Collectors.toList());
}

我怀疑我错误地配置了Redis客户端,但不知道那是什么。

非常感谢任何帮助/帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

Stream使用RMapCache对象提供的迭代器。默认情况下,它仅获取10个元素,我建议您改用RMapCache.readAllMap方法。