这个问题是关于Redis的持久性。
我正在使用redis作为社交网站的“快速后端”。这是一个单一的服务器设置。我一直在将PostgreSQL职责转移到Redis。目前在b
中,appendonly设置设置为etc/redis/redis.conf
。快照设置为appendonly no
,save 900 1
,save 300 10
。所有这一切都适用于生产和开发。根据生产日志,save 60 10000
会被大量调用。这是否意味着实际上,我每隔60秒就会收到一次备份?
有些文献建议将AOF和RDB备份结合使用。因此,我正在努力转动save 60 10000
并使用appendonly on
。对于任何有过双方经验的人来说:
1)使用appendfsync everysec
和appendonly on
会导致性能下降吗?它会击中CPU吗?写入负载偏高。
2)一旦我使用这些新设置重启redis服务器,我仍然会丢失数据的最后60秒,对吗?
3)重启时间是否需要担心?我的appendfsync everysec
文件很小; 〜90MB。
我正在努力寻找更多关于redis持久性的信息,并且正确地得到我的期望。就个人而言,在遇到灾难的情况下,我很好地丢失了60个数据,因此我是否应该使用AOF也是我在思考的问题。随意加入。谢谢!
答案 0 :(得分:23)
这是否意味着实际上,我每隔60秒就会收到一次备份?
否即可。 Redis在60秒后执行后台保存,如果至少有10000个键已更改。否则,它不会进行后台保存。
使用appendonly on和appendfsync everysec会导致性能降级吗?它会击中CPU吗?写入负载偏高。
这取决于许多事情,例如磁盘性能(SSD VS HDD),写入/读取负载(QPS),数据模型等。您需要在特定环境中使用自己的数据进行基准测试。
一旦我使用这些新设置重启redis服务器,我仍然会丢失数据的最后60秒,对吗?
否即可。如果同时打开AOF和RDB,Redis重新启动时,AOF文件将用于重建数据库。由于您将其配置为appendfsync everysec
,因此您只会丢失最后 1秒的数据。
重启时间是否需要担心?我的dump.rdb文件很小; 〜90MB。
如果启用AOF,并且Redis重新启动时,它会重播AOF文件中的日志以重建数据库。通常AOF文件比RDB文件大,并且可能比从RDB文件恢复要慢。你应该担心吗?在特定环境中使用您自己的数据做基准测试。
修改强>
重要通知
假设您已将Redis设置为使用RDB保存,并将大量数据写入Redis。过了一会儿,你想打开AOF保存。 永远不要修改配置文件以启用AOF并重新启动REDIS,否则您将失去一切。
因为,一旦在redis.conf中设置appendonly yes
并重新启动Redis,它将从AOF文件加载数据,无论文件是否存在。如果该文件不存在,则会创建一个空文件,并尝试从该空文件加载数据。所以你会失去一切。
实际上,您不必重新启动Redis即可打开AOF。相反,您可以使用config set
命令动态启用它:config set appendonly yes
。