2013-10-29 17 views
0

我有一个Procfile我跟工头用它来开始我的地方的Redis和使用WEBrick服务器:如何正确关闭并转储带有Foreman的Redis服务器?

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配置以在开发中始终保持数据?

回答

0

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

+0

不,我没有尝试。 –

+0

如果发送'SIGTERM'仍然不会导致Redis保存转储文件,请调用[shutdown](http://redis.io/commands/shutdown)命令:'redis-cli shutdown save'。 – Jimothy

0

我在Redis实例的开发笔记本电脑上使用了Append-only File persistance。要打开它,只需将appendonly yes添加到您的redis配置中即可。我离开了fsync选项1秒。

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

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