したがって、redis gem はスレッドセーフであるはずです。それは良いことです。しかし、どのように設定する必要があるのか 疑問に思っています。jRuby と Celluloid を使用しています (デフォルトのファイバーを使用)。
私が今それを使用している方法は、グローバルメソッドが定義されていることです:
def redis
@_redis ||= Redis.new(...)
end
Redis クライアントのタイムアウト パラメータを 30 に設定しています。スレッド セーフの問題は発生していないと思います (スレッドを生成する前に初期化します) が、Redis::TimeoutErrorエラーが発生することがあります。これらのスレッドが接続を永遠に開いたままにして、最終的に利用可能なすべての接続を占有するのではないかと思いますか?
基本的に問題は、時々 Redis::TimeoutError が発生することです。ある時点で開いている接続を確認する方法はありますか? または、問題が何であるか考えていますか?
ありがとう