【问题标题】:How do I properly shutdown and dump a Redis server with Foreman?如何使用 Foreman 正确关闭和转储 Redis 服务器?
【发布时间】:2013-10-30 21:54:31
【问题描述】:

我有一个与 Foreman 一起使用的 Procfile 来启动我的本地 redis 和 webrick 服务器:

web: bundle exec rails server -p $PORT
redis: redis-server config/redis.development.conf

我使用配置中定义的命名套接字连接到 Redis,如下所示:

unixsocket /tmp/redis-APPNAME.sock

在 Rails 中一切正常,但是当我在终端中点击 CTRL+C 来终止 Foreman 时,Redis DB 不会被转储。 Redis 服务器是terminated by SIGINT 这种方式。因此,每当我重新启动 Foreman 堆栈时,我都会得到旧的 Redis 数据。

有没有办法告诉工头在 Redis 上使用正确的 SHUTDOWN 也会转储数据库?还是我应该修改 Redis 配置以在开发过程中始终保持数据?

【问题讨论】:

    标签: ruby-on-rails ruby redis foreman procfile


    【解决方案1】:

    您是否尝试过使用wrapper script 来发送SIGTERM

    【讨论】:

    • 如果发送SIGTERM仍然没有导致Redis保存转储文件,调用shutdown命令:redis-cli shutdown save
    【解决方案2】:

    我最终在我的开发笔记本电脑上为 Redis 实例使用了仅附加文件持久性。要打开它,您只需将 appendonly yes 添加到您的 redis 配置中。我将 fsync 选项保留为 1 秒。

    这样,当我终止 Foreman 并切换到另一个项目时,我总是会获得持久数据。

    有关 Redis 持久性选项的更多详细信息,请点击此处:http://redis.io/topics/persistence

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-18
      • 2015-03-16
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      • 2014-02-28
      相关资源
      最近更新 更多