redis - Redis中的AOF和RDB备份

标签 redis

这个问题是关于Redis持久化的。

我将 Redis 用作社交网站的“快速后端”。这是一个单一的服务器设置。我一直在稳步地将 PostgreSQL 的职责转移到 Redis。目前在etc/redis/redis.conf中,appendonly设置为appendonly no。快照设置为 save 900 1save 300 10save 60 10000。所有这一切对于生产和开发都是如此。根据生产日志,save 60 10000 被频繁调用。这是否意味着实际上,我每 60 秒获取一次备份?

一些文献建议同时使用 AOF 和 RDB 备份。因此,我正在权衡打开 appendonly on 并使用 appendfsync everysec。对于硬币两面都有经验的任何人:

1) 使用appendonly onappendfsync everysec 会导致性能下降吗?会不会打CPU?写入负载偏高。

2) 一旦我使用这些新设置重新启动 redis 服务器,我仍然会丢失最后 60 秒的数据,对吗?

3) 重启时间是否值得担心?我的 dump.rdb 文件很小; ~90MB。

我正在尝试了解更多有关 redis 持久性的信息,并实现我的期望。就个人而言,我可以接受在发生灾难时丢失 60 秒的数据,因此我是否应该使用 AOF 也是我在考虑的问题。请随意插话。谢谢!

最佳答案

Does this mean that practically, I'm getting backups every 60 seconds?

。 Redis 在 60 秒后进行后台保存,如果至少有 10000 个键被更改。否则,它不会进行后台保存。

Will using appendonly on and appendfsync everysec cause a performance downgrade? Will it hit the CPU? The write load is on the high side.

这取决于很多事情,例如磁盘性能(SSD VS HDD)、写入/读取负载(QPS)、数据模型等。您需要在特定环境中使用自己的数据进行基准测试。

Once I restart the redis server with these new settings, I'll still lose the last 60 secs of my data, correct?

。如果同时开启AOF和RDB,当Redis重启时,会使用AOF文件重建数据库。由于您将其配置为 appendfsync everysec,因此您只会丢失最后 1 秒 的数据。

Are restart times something to worry about? My dump.rdb file is small; ~90MB.

如果开启AOF,当Redis重启时,它会重放AOF文件中的日志来重建数据库。通常 AOF 文件比 RDB 文件大,并且它可能比从 RDB 文件恢复慢。你应该为此担心吗?在您的特定环境中使用您自己的数据进行基准测试。

编辑

重要通知

假设你已经设置Redis使用RDB保存,并向Redis写入大量数据。过了一段时间,你想开启AOF保存。 切勿修改配置文件以打开 AOF 并重新启动 REDIS,否则您将失去一切

因为,一旦你在redis.conf中设置了appendonly yes,然后重启Redis,它就会从AOF文件中加载数据,不管这个文件是否存在。如果该文件不存在,它会创建一个空文件,并尝试从该空文件加载数据。所以你会失去一切。

其实开启AOF并不需要重启Redis。相反,您可以使用 config set 命令动态打开它:config set appendonly yes

关于redis - Redis中的AOF和RDB备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39953542/

相关文章:

kotlin - Redis对客户端进行认证,同时选择RESP协议(protocol)版本

c - 如何在多个Lua State(多线程)之间传递数据?

javascript - Node.js Redis lpush 错误

php - 使用redis的新闻提要

Heroku:当我的 Redis 连接都被使用时会发生什么?

database-design - 使用 Redis + Node.js 的数据库架构

redis - Redis 中等效的复合主键

caching - Redis集群-网络延迟

node.js - 是否可以在 ioredis 中使用 hget?

redis - 如何用 jest 模拟 Nestjs-redis