这个问题是关于Redis的持久性 .
我'm using redis as a '快速后端' for a social networking website. It' s单个服务器设置 . 我一直在将PostgreSQL职责转移到Redis . 目前在 etc/redis/redis.conf
中,appendonly设置设置为 appendonly no
. 快照设置为 save 900 1
, save 300 10
, save 60 10000
. 所有这一切都适用于 生产环境 和开发 . 根据 生产环境 日志, save 60 10000
被大量调用 . 这是否意味着实际上,我每隔60秒就会获得一次备份?
一些文献建议将AOF和RDB备份一起使用 . 因此,我正在努力转向 appendonly on
并使用 appendfsync everysec
. 任何有过双方经验的人:
1)使用 appendonly on
和 appendfsync everysec
会导致性能下降吗?它会击中CPU吗?写入负载偏高 .
2)一旦我用这些新设置重启redis服务器,我仍然会丢失我的数据的最后60秒,对吗?
3)重启时间是否需要担心?我的 dump.rdb
文件很小; 〜90MB .
我正试图找到更多关于redis持久性的信息,并且正确地得到我的期望 . 就个人而言,在遇到灾难的情况下,我很好地丢失了60个数据,因此我是否应该使用AOF也是我在思考的问题 . 随意加入 . 谢谢!
1 回答
NO . Redis在60秒后进行背景保存, if there're at least 10000 keys have been changed . 否则,它不会进行后台保存 .
这取决于许多事情,例如磁盘性能(SSD VS HDD),写入/读取负载(QPS),数据模型等 . 您需要在特定环境中使用自己的数据进行基准测试 .
NO . 如果同时打开AOF和RDB,Redis重新启动时,AOF文件将用于重建数据库 . 由于您将其配置为
appendfsync everysec
,因此您将只丢失最后的 1 second 数据 .如果打开AOF,Redis重新启动时,它会重播AOF文件中的日志以重建数据库 . 通常AOF文件比RDB文件大,并且可能比从RDB文件恢复要慢 . 你应该担心吗?在特定环境中使用您自己的数据做基准测试 .
EDIT
IMPORTANT NOTICE
假设您已将Redis设置为使用RDB保存,并将大量数据写入Redis . 过了一会儿,你想打开AOF保存 . NEVER MODIFY THE CONFIG FILE TO TURN ON AOF AND RESTART REDIS, OTHERWISE YOU'LL LOSE EVERYTHING .
因为,一旦你在redis.conf中设置
appendonly yes
并重新启动Redis,它将从AOF文件加载数据,无论文件是否存在 . 如果文件没有丢失一切 .实际上,您无需重新启动Redis即可打开AOF . 相反,您可以使用
config set
命令动态打开它:config set appendonly yes
.