Singleton pattern will only generate an instance. The Redis pool needs to be initialized only once and the connection is obtained from the pool.
Signed-off-by: Wu Zhende wuzhende666@163.com --- src/scheduler/redis_client.cr | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/src/scheduler/redis_client.cr b/src/scheduler/redis_client.cr index 1253108..a8d9dcb 100644 --- a/src/scheduler/redis_client.cr +++ b/src/scheduler/redis_client.cr @@ -6,12 +6,17 @@ require "redis"
require "./constants" require "../lib/job" +require "singleton"
class Redis::Client class_property :client HOST = (ENV.has_key?("REDIS_HOST") ? ENV["REDIS_HOST"] : JOB_REDIS_HOST) PORT = (ENV.has_key?("REDIS_PORT") ? ENV["REDIS_PORT"] : JOB_REDIS_PORT).to_i32
+ def self.instance + Singleton::Of(self).instance + end + def initialize(host = HOST, port = PORT) @client = Redis::PooledClient.new(host: host, port: port, pool_size: 25, pool_timeout: 0.01) end