Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在生产中从redis获取热快照的有效方法?_Redis_Production Environment_Snapshot_Redis Cluster_Backup Strategies - Fatal编程技术网

在生产中从redis获取热快照的有效方法?

在生产中从redis获取热快照的有效方法?,redis,production-environment,snapshot,redis-cluster,backup-strategies,Redis,Production Environment,Snapshot,Redis Cluster,Backup Strategies,我们的redis cluster拥有超过200万个密钥,这些密钥以1分钟的时间间隔进行更新。现在我们需要在特定的时间间隔内(例如每10分钟)拍摄redis db的快照。此快照不应暂停redis命令的执行。 是否有任何异步方式从redis获取快照 如果我们能得到任何关于开源工具或框架的建议,这将非常有帮助。Redis是异步的,可以拍摄快照 它调用操作系统的fork()函数。根据Redis手册 如果数据集很大,则Fork()可能会非常耗时,如果数据集很大且CPU性能不好,则可能会导致Redis停止为

我们的redis cluster拥有超过200万个密钥,这些密钥以1分钟的时间间隔进行更新。现在我们需要在特定的时间间隔内(例如每10分钟)拍摄redis db的快照。此快照不应暂停redis命令的执行。 是否有任何异步方式从redis获取快照

如果我们能得到任何关于开源工具或框架的建议,这将非常有帮助。

Redis是异步的,可以拍摄快照

它调用操作系统的fork()函数。根据Redis手册

如果数据集很大,则Fork()可能会非常耗时,如果数据集很大且CPU性能不好,则可能会导致Redis停止为客户端提供服务几毫秒甚至一秒钟

一分钟内更新200万次,即30K+QPS。 因此,您确实需要尝试一下,运行与您的业务类似的基准测试,然后发布BGSAVE,监视系统的I/O和CPU使用情况,并查看您的redis呼叫延迟是否出现峰值


然后发出LASTSAVE,它将告诉您上次成功快照发生的时间。因此,您可以调整备份计划。

目前,我们在登台环境中使用此功能拍摄快照。由于数据量大,我们如何看待redis sentinel部署的滞后。正如你所说的,我们可能需要进一步尝试,并为这个查询找到一个最佳的资源需求。30K+QPS实际上是相当高的,所以我想你可以考虑ReDIS集群。例如,三个主节点,因此三个Snapshop同时运行,这将大大减轻CPU压力。还可以尝试每秒进行AOF和同步。这不是快照,但可能足够好了。除此之外,更好的CPU或SSD可能取决于基准测试的结果。