2013-10-29 42 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