我正在运行一个Redis实例,其最大内存和使用量约为25GB。它在Kubernetes中作为状态集运行。因为redis吊舱可以被调度到任何盒子,并且可以在任何时候通过RDB进行AOF备份时重新启动。
但是,昨天redis吊舱重新启动,加载数据花了大约5分钟,这让我想到,如果数据很大,RDB备份是否更适合?
我想知道,如果数据量很大,并且您希望避免启动时间较慢,是否最好使用RDB备份?如果每隔5或10分钟运行一次BGSAVE,那么数据大小是否很大(大于15GB)是一种好做法?
(此外,大数据量可能不够大,其他人可能无法使用,但这与启动时间有关,我担心,以及由此带来的停机时间)
我是OP。
不是答案,但我想分享一些实验后收集的数据
>
我用16.5GB的数据填充Redis DB,使用以下命令调试填充165000000 PHPREDIS_会话
然后我在-BGREWRITEAOF
的帮助下重写/优化AOF文件,整个操作耗时209秒:aof_last_rewrite_time_sec:209
就在重写之后,我重新启动了Redis实例,用了3分钟将整个数据恢复到16.5Gb的Redis内存中
在此之后,我关闭了AOF并启用了RDB备份,并调用BGSAVE开始备份。它花了202秒才完成:rdb\u last\u bgsave\u time\u sec:202
在RDB备份之后,我再次重新启动了Redis实例,整个数据集在Redis内存中恢复大约需要3分钟,与AOF差不多。
看起来RDB和100%优化的AOF文件将或多或少地花费相同的时间来恢复数据。
如果不优化或重写AOF,可能需要更多的时间,因为Redis将运行更多的命令来恢复数据。
我还测试了具有25GB数据的Redis实例的启动时间,并且启用了AOF,恢复数据需要4m30。
注:上述数据仅通过一次迭代获得,vanilla Redis没有任何调整。这些数字可能与其他情况或配置不匹配。我只是想分享我的发现。
这个问题是关于Redis持久性的。 我正在使用redis作为社交网站的“快速后端”。这是一个单一的服务器设置。我一直在将PostgreSQL的职责稳步转移到Redis。目前在中,附加设置设置设置为。快照设置为,,。所有这些对于生产和开发都是如此。根据生产日志,被大量调用。这是否意味着实际上,我每60秒就会得到一次备份? 一些文献建议同时使用AOF和RDB备份。因此,我正在权衡是否打开appendo
在redis 4.0中,讨论了一个新的混合RDB AOF,在redis更改日志中输入链接描述: 混合RDB-AOF格式。如果启用,则在重写AOF文件时使用新格式:重写使用更紧凑、更快的格式生成RDB格式,并将AOF流附加到文件中。这允许在使用AOF持久性时更快地重写和重新加载 我想知道如何在redis配置文件中设置此配置?
问题内容: 如何完全禁用RDB和AOF?我不在乎持久性,只希望它存在于内存中。 我已经注释掉了: 但这并没有帮助,我发现Redis仍尝试写入磁盘。我知道Redis希望写入磁盘,因为出现以下错误:“无法打开.rdb进行保存:权限被拒绝” 我不在乎该错误,因为我想完全禁用持久性。 问题答案: 如果要更改正在运行的Redis,请登录Redis,然后 禁用aof : 禁用rdb : 如果要在重新启动Red
如何完全禁用RDB和AOF?我不在乎持久性,只希望它出现在内存中。 我已经注释了: 但这并没有起到任何作用,我看到Redis仍在尝试写入磁盘。我知道Redis想写入磁盘,因为我遇到了这样一个错误:“打开失败。用于保存的rdb:权限被拒绝” 我不在乎错误,因为我想完全禁用持久性。
我正在寻找备份我的Redis数据的最佳方法。 我读到了RDB和AOF。但根据我的想法,最好的方法是以以下方式组合: 定期创建RDB,并仅从该点保存AOF。 这样,当您重新启动时。Redis可以恢复RDB文件(比整个AOF回滚更快),然后在最后几秒钟回滚AOF文件。 AOF文件包含自上次RDB以来的每一次写入。 我的问题是,这在Redis中可用吗?或者这有什么不好的地方吗?
我们有一个使用默认配置运行但启用了AOF的Redis服务器。出于性能原因,我们希望禁用AOF,而只使用RDB。 如果我们使用重新启动Redis实例,所有键都将丢失。谢天谢地,使用再次重新启动会将我们的数据返回给我们。 redis文档展示了如何从RDB迁移到AOF,但是从AOF迁移到RDB的正确方法是什么?