Redis两种持久化方案对比

  • Redis提供了不同的持久性选项:

    • RDB持久性以指定的时间间隔执行数据集的时间点快照。
    • AOF持久性记录服务器接收的每个写入操作,将在服务器启动时再次播放,重建原始数据集。使用与Redis协议本身相同的格式以仅追加方式记录命令。当Redis太大时,Redis能够重写日志背景。

  • RDB的优缺点

    • 优点:

      • RDB最大限度地提高了Redis的性能,父进程不需要参与磁盘I/O

      • 与AOF相比,RDB允许使用大数据集更快地重启

    • 缺点:

      • 如果您需要在Redis停止工作时(例如断电后)将数据丢失的可能性降至最低,则RDB并不好

      • RDB经常需要fork()才能使用子进程持久存储在磁盘上。如果数据集很大,Fork()可能会非常耗时

  • AOF的优缺点

    • 优点:

      • 数据更加安全

      • 当Redis AOF文件太大时,Redis能够在后台自动重写AOF ## INCRE 1 执行10万 = INCREBY10万执行一次

      • AOF以易于理解和解析的格式一个接一个地包含所有操作的日志 # flushdb类似于rm -rf /*

    • 缺点:

      • AOF文件通常比同一数据集的等效RDB文件大

      • 根据确切的fsync策略,AOF可能比RDB慢

  • RDB 和 AOF ,我应该用哪一个? 一般来说,如果想达到足以媲美 PostgreSQL 的数据安全性, 你应该同时使用两种持久化功能。如果你非常关心你的数据,但仍然可以承受数分钟以内的数据丢失, 那么你可以只使用 RDB 持久化。有很多用户都只使用 AOF 持久化, 但我们并不推荐这种方式: 因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比 AOF 恢复的速度要快

  • 在线上我们到底该怎么做?

    • RDB持久化与AOF持久化同步使用

    • 如果Redis中的数据并不是特别敏感或者可以通过其它方式重写生成数据,可以关闭持久化,如果丢失数据可以通过其它途径补回;

    • 自己制定策略定期检查Redis的情况,然后可以手动触发备份、重写数据;

    • 采用集群和主从同步

猜你喜欢

转载自blog.csdn.net/qq_41023026/article/details/89739252