1

Jedis を使用して Sharded Redis に接続するアプリの保守を手伝っています。

私が使用しているアプリは、ShardedJedisPoolのインスタンスをサービスに保持して、複数のリクエストで再利用し続けます。

Sharded Jedis に関するドキュメントを確認していて、次のコメントに気付きました。

pool.destroy を忘れると、タイムアウトに達するまで接続が開いたままになります。

私たちのアプリはどこでもpool.destroy()を呼び出していません。すべてのリクエストでpool.destroy()を呼び出す必要がありますか? そして、リクエストごとに新しいプールも作成すると思いますか?または、プールをサービスの存続期間中存続させ、サービスのfinalizeメソッドでpool.destroy()のみを呼び出すことはできますか?

4

1 に答える 1

2

ShardedJedisPoolとはどちらもJedisPool、アプリケーションの存続期間中に一度だけ作成されることを意図しています。そして、アプリケーションがシャットダウンするときにそれらを破棄します。ShardedJedisPoolとは両方ともJedisPoolスレッドセーフです。つまり、スレッド間で同じインスタンスを使用しても安全であり (この場合はリクエスト)、ShardedJedisorのインスタンスを取得できますJedis。ShardedJedis または Jedis を使用した後は、それらをプールに戻す必要があります。そうしないと、プールが使い果たされます (構成方法によって異なります)。

于 2014-02-06T22:30:44.953 に答える