Redis 阻塞保存
Posted
技术标签:
【中文标题】Redis 阻塞保存【英文标题】:Redis Blocking Save 【发布时间】:2011-01-21 15:40:10 【问题描述】:如何强制 Redis 进行阻塞保存?我正在使用 Ruby Redis gem,但我相信这个问题并不特定于该库。似乎 SAVE 和 BGSAVE 命令似乎会在后台执行某些操作,从而在后续调用中导致“-ERR 后台保存正在进行”错误。
希望这将是一个无聊的同步调用,它会阻塞所有其他 Redis 命令,直到“dump.rdb”的保存完成。希望这不需要真正关闭服务器,使用“/etc/init.d/redis-server”。大概我应该使用 LASTSAVE 命令进行轮询?
【问题讨论】:
【参考方案1】:如果您调用 SAVE,但收到有关正在进行的后台保存的错误,这意味着还有一个 BGSAVE 正在进行中,因为其中一个是正确的:
1) 有人叫 BGSAVE 2) Redis配置为定时保存(默认)。
所以你的保存失败,因为已经有一个保存在进行中。您可以检查是否有后台在进行中,并在完成时检查 INFO 输出。
【讨论】:
【参考方案2】:SAVE
是a synchronous save; BGSAVE
是 the asynchronous one。
为什么你认为SAVE
在后台运行?
【讨论】:
【参考方案3】:Redis#save 就是这样做的。你用的是什么版本的 Redis 和 redis gem?
【讨论】:
以上是关于Redis 阻塞保存的主要内容,如果未能解决你的问题,请参考以下文章