1、 Redis 是一个支持持久化的内存数据库,将内存中的数据保存到磁盘中,重启的时候可以再次加载进行使用。
两种持久化方式:1)RDB快照(默认) 2)AOF日志
2、 RDB快照 (Redis DataBase)
1)在指定的时间间隔内,将内存中的数据集快照写入磁盘
2)默认方式是将 Reids 在内存中的数据集定时 dump 到磁盘上,文件是 dump.rdb
3)实际操作过程是 fork 一个子进程,先将数据集写入临时文件,写入成功后替换之前的文件,用二进制压缩存储
一句话概括:子进程现将内存中的数据集快照dump到临时文件,写入成功后替换之前的文件
3、 AOF日志 (Append Only File)
1)AOF 是以日志的形式记录服务器所处理的每一个写入、删除操作,查询操作不会记录
2)原理是将 Redis 的操作日志以追加的方式写入文件。 Redis 服务器启动之初会读取该文件,重新构建数据库,以保证启动后数据的完整性
3)以文本的方式记录,打开文件可以看到详细的操作记录
4)在redis的配置文件中设置appendonly yes,此时rdb方式自动失效
5)如果 AOF 文件出现异常,Redis 在重启的时候将会拒绝加载,从而保证数据的一致性。 AOF 文件修复命令:redis-check-aof -fix
4、 RDB快照的优缺点:
优点:1)RDB 是紧凑的二进制文件 2)适合备份,全量复制等场景
缺点:1)RDB 无法实现实时或者秒级持久化 2)新老版本无法兼容
5、 AOF日志优缺点:
优点:1)可以更好地保护数据不丢失 2)append-only 模式写入性能比较高 3)适合做灾难性误删除的紧急恢复
缺点:1)对于同一份文件,AOF 日志要比 RDB 快照大
2)AOF 开启后会对写的 QPS(Query Per Second,每秒查询率) 有所影响,相对于 RDB 来说写 QPS 要下降
3)数据库恢复比较慢,不合适做冷备
6、 RDB 和 AOF 的区别:
1)持久化方式不同:RDB是快照方式,二进制文件。AOF是日志方式,文本文件
2)数据完整性:RDB 可能会引起一定程度的数据丢失,AOF 不会造成数据丢失。如果对数据的完整性要求不高 RDB 是最好的解决方案,反之选择 AOF
3)RDB 启动效率更高,RDB 恢复数据远快于 AOF
4)AOF 占用的空间比 RDB 大
5)AOF 的同步速度比 RDB 慢
7、 Redis 持久化命令:
1)SAVE 直接调用 Redis 持久化函数 rdbSave ,阻塞 Redis 主进程,直到保存完成为止,在主进程阻塞期间,服务器不能处理客户端的任何请求
如:save 900 1 900秒内有超过1个key被修改就快照保存
2)BGSAVE 会创建一个子进程负责调用 rdbSave 函数,并在保存完成之后向主进程发送完成信号,Redis 服务器在 BGSAVE 执行期间仍然可以继续处理客户端的请求
Redis 七 持久化
最新推荐文章于 2024-03-03 17:35:52 发布