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 秒かかりました) => かなりの改善.

これの理由は何ですか?また、使用する必要がある JedisPools の最適な数はいくつですか?

4

0 に答える 0