JAVA面试准备之Redis Redis持久化方式

Redis持久化方式有哪些?
一旦redis服务器退出,数据就会丢失。为了解决这个问题,Redis提供了三种解决方案,将内存中的数据保存到磁盘中,避免数据丢失:
1.RDB(快照)持久化:保存某个时间点的全量数据快照
2.AOF(Append-Only-File)持久化:保存写状态。记录下除了查询以外的所有变更数据库状态的指令;以append的形式追加保存到AOF文件中(增量)。
3.RDB-AOF混合持久化方式:BGSAVE做镜像全量持久化,AOF做增量持久化。Redis实例重启时,使用BGSAVE持久化文件,重新构建数据,再使用AOF重放近期的操作指令,来完整恢复重启之前的状态。

RDB RDB(快照)持久化:保存某个时间点的全量数据快照
RDB配置:
redis安装目录:Redis.conf
持久化策略
JAVA面试准备之Redis Redis持久化方式
文章图片


900秒内如果有一条写入指令,则900s时产生一次快照
300秒内如果有十条写入指令,则300s时产生一次快照
60秒内有一万条写入指令,则进行一次备份
JAVA面试准备之Redis Redis持久化方式
文章图片


当备份进程出错的时候,主进程停止接收新的写入操作,这样做是为了保护持久化的数据一致性
JAVA面试准备之Redis Redis持久化方式
文章图片

在备份的时候,需要对RDB文件进行压缩后才保存,建议设置为no
持久化文件保存的位置:
JAVA面试准备之Redis Redis持久化方式
文章图片


保存RDB文件的指令:
SAVE:阻塞Redis的服务器进程,直到RDB文件被创建完毕
BGSAVE:Fork出一个子进程来创建RDB文件,不阻塞服务器进程

RDB产生快照文件:
方式1:save
客户端会卡顿一段时间,什么事情都做不了
JAVA面试准备之Redis Redis持久化方式
文章图片

方式2:bgsave
后台保存,客户端不会卡顿,当lastsave值更新时,说明保存成功了
JAVA面试准备之Redis Redis持久化方式
文章图片


自动化触发RDB持久化的方式:
JAVA面试准备之Redis Redis持久化方式
文章图片

JAVA面试准备之Redis Redis持久化方式
文章图片

JAVA面试准备之Redis Redis持久化方式
文章图片

JAVA面试准备之Redis Redis持久化方式
文章图片


AOF 保存写状态。记录下除了查询以外的所有变更数据库状态的指令;以append的形式追加保存到AOF文件中(增量)

AOF配置
redis安装目录:Redis.conf
AOF默认是关闭的
打开AOF:
JAVA面试准备之Redis Redis持久化方式
文章图片


AOF文件默认的名字:
JAVA面试准备之Redis Redis持久化方式
文章图片


配置AOF文件的写入方式:
JAVA面试准备之Redis Redis持久化方式
文章图片


always:一旦缓存区的数据发生变化,就将缓存区内容写入AOF中
everysec:将缓存区内容,每隔一秒写入AOF中,推荐
no:将写入AOF的方式交由操作系统来决定,一般操作系统会等缓存区被填满,才会同步数据到磁盘当中

也可以使用命令打开AOF:
Src目录下生成了appendonly.aof文件
JAVA面试准备之Redis Redis持久化方式
文章图片

JAVA面试准备之Redis Redis持久化方式
文章图片

Redis数据的恢复
RDB和AOF文件共存情况下的恢复流程
JAVA面试准备之Redis Redis持久化方式
文章图片

JAVA面试准备之Redis Redis持久化方式
文章图片

【JAVA面试准备之Redis Redis持久化方式】

    推荐阅读