我有一个Rails应用程序,我想连接到Redis数据结构服务器。我想知道我该怎么做。我正在使用位于$redis
的全局变量config/initializers/redis.rb
来对整个应用程序进行查询。
我认为这种方法不适合具有80+同时连接的应用程序,因为它使用一个单一的全局变量来处理Redis连接。
我该怎么做才能解决这个问题?我错过了关于Rails内部的一些内容吗?
教程我正在关注 http://jimneath.org/2011/03/24/using-redis-with-ruby-on-rails.html
答案 0 :(得分:3)
这取决于您将使用的应用程序服务器。如果您使用Unicorn这是一个受欢迎的选择,那么您应该没问题。
Unicorn分叉它的工作人员,每个人都会建立自己的数据库连接。而且由于每个工作人员一次只能处理一个请求,因此一次只需要一个连接。添加更多连接不会提高性能,只会打开更多(无用)连接。
ActiveRecord(它是Rails的DB部分)或DataMapper支持connection pooling,它是克服您提到的问题的常用解决方案。但是在线程环境中连接池only make sense。
除此之外,Redis主要是单线程(搜索“Redis的单线程特性”),因此无论如何都可能没有优势。有an request to add connection pooling但它已关闭,您可能会从那里获得更多信息。