Redis的持久化方式
1、Redis的持久化
redis的持久化:将内存中的数据保存到磁盘上,防止数据的丢失
redis支持的持久化方式有两种:
(1)RDB快照方式:将数据以快照的形式存储在磁盘之上。可以理解为将当前时刻的数据排成一张照片进行保存。
(2)AOF:日志追加,记录服务器接受的每一个写入操作(增、删、改,不包含查),当服务器启动时再次加载该日志,将日志中的命令重新执行一遍,从而达到数据的持久化
2、RDB快照持久化
2.1、如何触发RDB的持久化呢?
三种方式:
1、手动使用save命令
2、手动使用bgsave命令
3、通过配置自动触发
2.2、save和bgsave的区别及如何使用
save命令:
save命令会阻塞当前的Redis服务器,执行save命令期间,Redis不能执行其他的命令,直到RDB过程完成为止。流程提如下:
bgsave:
执行bgsave时,redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。流程图如下:
2.3设置RDB的自动触发:
进入redis目录,
编辑redis.conf文件,对save继续设置
2.4RDB方式保存的文件名称设置:
在redis.conf文件中使用命令查找到设置名称位置,根据自己偏好设置(可不修改,默认为dump)
2.5、RDB方式的数据恢复
RDB为自动恢复,将dump.rdb(若修改了名称将则为自己设置的那个.rdb文件)文件放入含有redis.conf文件的包下即可,redis再次启动时会加载此目录下的.rdb文件
2.6、RDB快照持久化方式的优缺点
优点:
(1)RDB文件紧凑,适合用于备份和灾难恢复。
(2)生成RDB文件时,redis进程会fork()一个子进程来处理所有的保存工作,主进程不需要进行任何的磁盘IO操作。
(3)RDB在恢复大数据集时的速度比AOF要快
缺点:
RDB快照持久化期间修改的数据不会被保存下来,有可能会丢失数据。保存数据的完整性较差。
3、AOF日志持久化方式
3.1、AOF模式默认为关闭的,需要手动开启(修改redis.conf中的内容)
AOF工作机制:redis将每一个收到的写命令通过write函数追加到文件之中,每次redis启动会将AOF生成文件中的代码自动加载一遍,使redis状态达到重启前的状态。
修改redis.conf文件中的配置,设置开启aof,
3.2、AOF的优缺点
优点:
(1)AOF可以更好的保护数据不丢失,一般AOF会每隔一秒,通过一个后台线程执行一次fsync操作,因此其最多丢失1秒钟的数据。
(2)AOF日志文件不用写入磁盘,没有任何磁盘寻址的开销,写入性能非常高,且文件不易损坏。
(3)AOF日志文件过大时,会出现后台重写操作,不会影响客户端的读写。
缺点:
(1)对于同一份数据而言,AOF日志文件通常比RDB数据快照文件要更大。
(2)恢复数据时用的时间比快照模式要慢很多。
文件过大时,会出现后台重写操作,不会影响客户端的读写。
缺点:
(1)对于同一份数据而言,AOF日志文件通常比RDB数据快照文件要更大。
(2)恢复数据时用的时间比快照模式要慢很多。