Action Cable 5是否需要Redis?

时间:2017-04-03 09:51:56

标签: ruby-on-rails redis actioncable

我用:

rails (5.0.2)
actioncable (5.0.2)
puma (3.8.2)

我有一个Rails 5动作电缆演示聊天,一年前它没有Redis也行不通 - 现在确实如此! (在bundle update之后)。

换句话说,我成功地让我的演示聊天工作在开发模式没有Redis 。我像这样设置the config/cable.yml

development:
  adapter: async

test:
  adapter: async

production:
  adapter: async 

然后开始rails c。就是这样 - 聊天工作正常,没问题。所以Redis显然不再需要了 - 不像一年前那样?

此外,我找到了一种让我的演示聊天与Redis 一起工作的方法。为此,我改变the config/cable.yml,如下所示:

redis: &redis
  adapter: redis
  url: redis://localhost:6379/1

production: *redis
development: *redis
test: *redis

gem 'redis', '~>3.2'添加到我的Gemfile(+ bundle install),然后启动Redis redis-server,然后rails c

所以我的问题是:

  1. Action Cable 5是否需要Redis才能工作? (看起来不行,但我不确定)。
  2. 如果(显然)Action Cable 5可以在有或没有Redis的情况下工作 - 有什么区别?
  3. 什么是gem 'redis', '~>3.2'?它的用途是什么?
  4. 一般来说,我不知道在Redis使用方面(非使用?),Action Cable 5的正确用法是什么。开发或生产模式有什么不同吗?

2 个答案:

答案 0 :(得分:4)

  

Action Cable 5是否需要Redis?

没有。根据{{​​3}},它可以使用其他适配器。

  

Action Cable提供订阅适配器接口来处理它   pubsub internals。默认情况下,异步,内联,PostgreSQL,   使用了Redis,还包括了非事件Redis适配器。该   新Rails应用程序中的默认适配器是异步(异步)   适配器。

问题:

  

Action Cable 5是否需要Redis才能工作? (看起来不是,但我   不确定)。

没有

  

如果(显然)Action Cable 5可以使用或不使用Redis - 有什么区别?

如果ActionCable没有区别,它使用抽象adapter并且不依赖于传输协议。

  

什么是gem 'redis', '~>3.2'?它的用途是什么?

它用于redis并提供与redis-server通信的接口。

答案 1 :(得分:0)

您可以在dev中使用async适配器,但文档说明

  

异步适配器用于开发/测试,不应该   用于生产。

http://edgeguides.rubyonrails.org/action_cable_overview.html#configuration

无论如何我试过了 - 至少我的设置(nginx,乘客) - 异步适配器只是不起作用。我猜测线程/进程问题

对于生产,您可以选择Redis或PostgreSql