如何使用Foreman正确关闭和转储Redis服务器?

时间:2013-10-29 13:24:31

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

我有一个与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数据库。 Redis服务器以这种方式terminated by SIGINT。因此,每当我重新启动Foreman堆栈时,我都会获得旧的Redis数据。

有没有办法告诉Foreman在Redis上使用正确的SHUTDOWN还会转储数据库?或者我应该修改Redis配置以始终在开发中保留数据吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试使用wrapper script代替发送SIGTERM

答案 1 :(得分:0)

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

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

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