Redis是一种内存键值存储,其完全在内存中运行,性能非常高效。但一旦发生系统故障或断电,内存中的数据会全部丢失。为了避免这个问题,redis本身提供了持久化的能力,使内存中的数据刷新至磁盘中,便于备份和恢复。
Redis持久化方式
Redis持久化的两种方式
- RDB 数据库快照
- AOF 日志追加文件
RDB
RDB是指定时间间隔,定期生成一个时间点快照。快照内包含当前实例的所有数据。
在默认情况下, Redis 将数据库快照保存在名字为 dump.rdb
的二进制文件中。在配置文件中,调整以下参数使redis在“n秒内有m个操作变动”的情况下保存快照,也能通过执行命令BGSAVE
或SAVE
手动保存。
save 60 1000
RDB运作方式
当 Redis 需要保存 dump.rdb文件时, 服务器执行以下操作:
- Redis 调用
fork()
,同时拥有父进程和子进程。 - 子进程将数据集写入到一个临时 RDB 文件中。
- 当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。
RDB优点
- RDB 是一个非常紧凑的文件,它保存了 Redis 在某个时间点上的数据集。 这种文件非常适合用于进行备份。 比如说,你可以每小时备份一次 RDB 文件,并