0

我有一个与 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 配置以在开发过程中始终保持数据?

4

2 回答 2

0

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

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

有关 Redis 持久性选项的更多详细信息:http ://redis.io/topics/persistence

于 2013-10-30T13:54:31.423 回答
0

您是否尝试过使用包装脚本来发送SIGTERM

于 2013-10-30T11:03:32.410 回答