我有一个 Rails 应用程序,想要连接到 Redis 数据结构服务器。我想知道我应该如何进行。我使用位于 config/initializers/redis.rb
的全局变量 $redis
来在整个应用程序中进行查询。
我认为这种方法不适合具有 80 个以上并发连接的应用程序,因为它使用一个全局变量来处理 Redis 连接。
我应该怎么做才能解决这个问题?我是否遗漏了 Rails 内部的一些内容?
我正在关注的教程 http://jimneath.org/2011/03/24/using-redis-with-ruby-on-rails.html
最佳答案
这取决于您将使用的应用程序服务器。如果您使用Unicorn这是一个受欢迎的选择,你应该没问题。
Unicorn fork 它的工作人员,每个工作人员都会建立自己的数据库连接。由于每个工作人员一次只能处理一个请求,因此一次只需要一个连接。添加更多连接不会提高性能,它只会打开更多(无用)连接。
ActiveRecord(Rails 的数据库部分)或 DataMapper 支持 connection pooling这是克服您提到的问题的常见解决方案。然而连接池only make sense在线程环境中。
最重要的是,Redis 主要是单线程的(搜索“Redis 的单线程性质”),因此可能没有任何优势。有an request to add connection pooling但它已关闭,您可能会从那里获得更多信息。
关于ruby-on-rails - 如何正确使用/插入Redis与Rails?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21629711/