2

最初,当我使用 1 JedisPool 与 Redis 服务器(在服务器上运行的单个 redis 实例)通信时,我看到我的 200K 查询需要 15 秒才能完成。对于每个查询,我执行以下操作:

Jedis jedis = pool.getResource();
Pipeline p = jedis.pipelined();
p.multi();
for (String ViewId : ViewIds) { 
    for (Article aR : view.getEntriesList()) {
        p.rpush(ViewId, <article-in-json>);
    }
    p.ltrim(ViewId, -10, -1);
} 
p.exec();
p.sync();
pool.returnResource(jedis);

JedisPool 创建使用:

JedisPool pool = new JedisPool(new JedisPoolConfig(), getHostName(), getPort(), 0, "foobared");

但是,当我将 8 个 JedisPools 用于同一台服务器(相同的 redis 实例)并以循环方式使用它们时,我看到 200K 查询在大约 8-10 秒内处理(之前使用 1 个 JedisPool 需要 15 秒)=> 相当大的改进.

这是什么原因?我们应该使用的最佳 JedisPool 数量是多少?

4

0 回答 0