我们有一个redis集群,它拥有超过200万个密钥,这些密钥的更新时间间隔为1分钟。现在我们需要在特定的时间间隔内拍摄redis db的快照,例如每10分钟一次。此快照不应暂停redis命令的执行。是否有任何异步方式从redis获取快照?如果我们能得到任何关于开源工具或框架的建议,那将非常有帮助。
bt1cpqcv1#
redis bgsave是异步的,它会获取快照。它调用操作系统的fork()函数。根据redis手册,如果数据集很大,fork()可能会很耗时,如果数据集很大,cpu性能不好,可能会导致redis在几毫秒甚至一秒钟内停止为客户端提供服务一分钟内更新200万次,即30k+qps。所以你真的必须尝试一下,运行与你的业务相似的基准测试,然后发布bgsave,监视你系统的i/o和cpu使用情况,看看你的redis调用延迟是否有峰值。然后发出lastsave,它将告诉您上一次成功快照发生的时间。所以你可以调整你的备份时间表。
1条答案
按热度按时间bt1cpqcv1#
redis bgsave是异步的,它会获取快照。
它调用操作系统的fork()函数。根据redis手册,
如果数据集很大,fork()可能会很耗时,如果数据集很大,cpu性能不好,可能会导致redis在几毫秒甚至一秒钟内停止为客户端提供服务
一分钟内更新200万次,即30k+qps。所以你真的必须尝试一下,运行与你的业务相似的基准测试,然后发布bgsave,监视你系统的i/o和cpu使用情况,看看你的redis调用延迟是否有峰值。
然后发出lastsave,它将告诉您上一次成功快照发生的时间。所以你可以调整你的备份时间表。