我有一个与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配置以始终在开发中保留数据吗?
答案 0 :(得分:0)
您是否尝试使用wrapper script代替发送SIGTERM?
答案 1 :(得分:0)
我最终在我的开发笔记本电脑上为Redis实例使用仅附加文件持久性。要打开它,您只需将appendonly yes
添加到您的redis配置中。我将fsync选项保留为1秒。
这样,当我终止Foreman并切换到另一个项目时,我总是得到持久数据。
有关Redis持久性选项的更多详细信息,请访问:http://redis.io/topics/persistence