针对 Ruby 的通用连接池
connection_pool ======================== Ruby 的通用连接池。MongoDB 具有自己的连接池。ActiveRecord 具有自己的连接池。这是一个通用的连接池,可以用于任何东西,例如 Redis、Dalli 和其他 Ruby 网络客户端。 使用方法 ============ 在 Ruby 应用程序中的线程或线程之间共享对象的连接池: ruby $memcached = ConnectionPool.new(size: 5, timeout: 5) { Dalli::Client.new } 然后在应用程序中使用该连接池: ruby $memcached.with do |conn| conn.get('some-count') end 如果连接池中的所有对象都在使用中,则 with 将阻塞,直到有一个可用。 如果在 :timeout 秒内没有可用的对象,则 with 将引发 ConnectionPool::TimeoutError(继承自 Timeout::Error)。
您还可以使用 ConnectionPool#then 来同时支持连接池和原生客户端。
包装器使用 method_missing 来检出连接,运行请求的方法,然后立即将连接重新放回池中。它的性能并不高,因此你需要尽快将性能敏感的代码移植到使用 with 中。
暂无开放 Issues,或尚未同步最近议题。