持久化定义**
将数据从掉电易失的内存放到永久存储的设备上
为什么需要持久化
因为所有的数据都在内存上,所以必须得持久化
-
RDB模式(默认开启)
1、保存真实的数据 2、将服务器包含的所有数据库数据以二进制文件的形式保存到硬盘里面 3、默认文件名 :/var/lib/redis/dump.rdb
-
RDB 的缺点
1、创建RDB文件需要将服务器所有的数据库的数据都保存起来,这是一个非常消耗资源和时间的操作,所以服务器需要隔一段时间才创建一个新的RDB文件,也就是说,创建RDB文件不能执行的过于频繁,否则会严重影响服务器的性能 2、可能丢失数据
-
-
AOF(AppendOnlyFile)
-
AOF持久化原理及优点
# 原理 1、每当有修改数据库的命令被执行时, 2、因为AOF文件里面存储了服务器执行过的所有数据库修改的命令,所以给定一个AOF文件,服务器只要重新执行一遍AOF文件里面包含的所有命令,就可以达到还原数据库的目的 # 优点 用户可以根据自己的需要对AOF持久化进行调整,让Redis在遭遇意外停机时不丢失任何数据,或者只丢失一秒钟的数据,这比RDB持久化丢失的数据要少的多
-
AOF重写
思考:AOF文件中是否会产生很多的冗余命令?
为了让AOF文件的大小控制在合理范围,避免胡乱增长,redis提供了AOF重写功能,通过这个功能,服务器可以产生一个新的AOF文件 -- 新的AOF文件记录的数据库数据和原由的AOF文件记录的数据库数据完全一样 -- 新的AOF文件会使用尽可能少的命令来记录数据库数据,因此新的AOF文件的提及通常会小很多 -- AOF重写期间,服务器不会被阻塞,可以正常处理客户端发送的命令请求
-
-
RDB 和 AOF 对比
RDB持久化 AOF持久化 全量备份,一次保存整个数据库 增量备份,一次保存一个修改数据库的命令 保存的间隔较长 保存的间隔默认为一秒钟 数据还原速度快 数据还原速度一般,冗余命令多,还原速度慢 执行SAVE命令时会阻塞服务器,但手动或者自动触发的BGSAVE不会阻塞服务器 无论是平时还是进行AOF重写时,都不会阻塞服务器