您的位置:首页 > 数据库 > Redis

Redis的持久化机制

2019-03-21 23:58 169 查看
版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_44420955/article/details/88729609

Redis的持久化机制

Redis持久化机制的概念

Redis是一个内存型数据库,为了保证服务器出现宕机或其他意外导致服务器停止时数据不丢失。
Redis提供了两种持久化机制,RDB和AOF机制,当服务重启时利用之前的持久化文件即可实现数据恢复。

RDB持久化机制

RDB机制也称Snapshotting,是通过将当前进程中的数据以快照文件的方式保存到磁盘,实现数据的持久化。

Snapshotting(RDB)机制的运行原理

redis将当前进程状态以一个快照文件的形式保存, 当服务出现异常, 重启redis服务时, 会自动将磁盘上的快照文件读取到内存中,完成数据的恢复。
1、Redis通过fork产生子进程;
2、父进程继续处理client请求,子进程负责将快照写入临时文件;
3、子进程写完后,用临时文件替换原来的快照文件,然后子进程退出。

rdb持久化的优缺点

优点:

1、 rdb快照文件是经过算法压缩后生成的,所以rdb文件比实际内存中的数据要小。 文件小,所以恢复数据速度快。
2、 我们可以将一个rdb快照文件, 传送给远程的服务器,完成备份。

缺点:

1、无法实现秒级的备份
2、不同版本之间的rdb快照文件格式存在差异, 不同版本的rdb快照文件不兼容

AOF持久化机(append only file)

AOF持久化是指, redis将当前进程中的数据以命令日志文件的方式保存到磁盘。 当重启redis服务时,再将命令日志文件读取到进程中, 将所有的命令执行一遍,完成数据的恢复。

Append-Only File(AOF)机制的运行原理

1、Redis 通过fork一个子进程
2、父进程继续处理client请求,子进程把AOF内容写入缓冲区;
3、子进程写完退出,父进程接收退出消息,将缓冲区AOF写入临时文件;
4、临时文件重命名成appendonly.aof,原来文件被覆盖,整个过程完成。

优点

1、 命令日志文件的可读性较好。
2、 可实现秒级备份

缺点

1、 命令日志文件比较大。 数据的恢复较慢 。

RDB和AOF对比

持久化技术 优势 缺陷
Snapshotting 1、RDB产生的文件小。2、RDB恢复快,并且简单,例如你可以快速的将RDB文件传输到其他主机,做数据的恢复。3、在进行RDB备份的时候,主进程仅仅需要创建一个子进程,所有的I/O操作都由子进程完成 1、无法做到实时秒级持久化,在两个备份点之间可能会发生数据丢失 2、生成的RDB二进制文件,会存在新老版本兼容的问题。
AOF 1、数据的备份粒度更小,数据安全性更高。2、AOF只会对日志文件进行追加操作,不会修改已经写好的内容。即使在掉电的情况下,AOF日志仍然是可用的 1、AOF文件通常比相同的数据集的RDB文件更大。2、AOF写日志可能会很慢,这跟fsync的机制有关。
总结

快照易丢失数据,AOF模式较为安全,但日志重写时磁盘io开销大,容易导致服务器性能严重下降,并且需要足够的物理内存,这个比较危险,所以在高性能服务器上一般是用主从复制来进行持久化

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: