【问题标题】:Does Action Cable 5 require Redis?Action Cable 5 需要 Redis 吗?
【发布时间】:2017-04-03 09:51:55
【问题描述】:

我用:

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

我有一个 Rails 5 Action Cable 演示聊天,一年前如果没有 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'?它有什么用?

一般来说,我不知道 Action Cable 5 在 Redis 使用方面的正确用法(不使用?)。开发模式和生产模式有区别吗?

【问题讨论】:

    标签: ruby-on-rails redis actioncable


    【解决方案1】:

    Action Cable 5 需要 Redis 吗?

    没有。根据documentation,它可以使用其他适配器。

    Action Cable 提供了一个订阅适配器接口来处理它的 pubsub 内部结构。 默认情况下,异步、内联、PostgreSQL、 包括事件 Redis 和非事件 Redis 适配器。这 新 Rails 应用程序中的默认适配器是异步 (async) 适配器。

    问题:

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

    没有。

    如果(显然)Action Cable 5 可以在有或没有 Redis 的情况下工作 - 有什么区别?

    在 ActionCable 没有区别的情况下,它使用抽象 adapter 并且不依赖于传输协议。

    gem 'redis', '~>3.2' 是什么?有什么用?

    是给redis用的,提供一个与redis-server通信的接口。

    【讨论】:

      【解决方案2】:

      您可以在 dev 中使用异步适配器,但文档声明

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

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

      无论如何我都试过了——至少在我的设置(nginx、passenger)中——异步适配器不起作用。我猜是线程/进程问题

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-28
        • 2017-07-10
        • 1970-01-01
        • 1970-01-01
        • 2019-12-30
        • 1970-01-01
        • 2018-04-17
        • 2021-12-24
        相关资源
        最近更新 更多