假设我每隔几分钟就用快照设置我的Redis备份,并且在触发快照时,运行(使用管道)正在进行中,这是不吉利的。 Redis如何处理这种情况?快照会延迟到事务完成吗?或者保存交易的第一部分?或者在下次备份之前排除整个交易?
答案 0 :(得分:1)
请记住,Redis是一个单线程事件循环。执行EXEC命令时,将以原子方式应用事务。因此RDB后台保存过程要么在EXEC之前分叉,要么在EXEC之后分叉。您可以认为fork会快速获取Redis内存的快照。
如果在fork之前应用EXEC,那么您的事务将在结果转储中。如果在fork之后应用EXEC,则即使Redis需要几分钟来生成它,您的事务也不会在转储中。什么都不会延迟(交易,也不是转储)。
另一方面,除非您的数据库很小,每隔几分钟进行一次转储可能太重了。也许您应该考虑使用仅附加文件。