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

持久化策略

 

900秒内如果有一条写入指令,则900s时产生一次快照

300秒内如果有十条写入指令,则300s时产生一次快照

60秒内有一万条写入指令,则进行一次备份

 

当备份进程出错的时候,主进程停止接收新的写入操作,这样做是为了保护持久化的数据一致性

在备份的时候,需要对RDB文件进行压缩后才保存,建议设置为no

持久化文件保存的位置:

 

保存RDB文件的指令

SAVE:阻塞Redis的服务器进程,直到RDB文件被创建完毕

BGSAVE:Fork出一个子进程来创建RDB文件,不阻塞服务器进程

 

RDB产生快照文件:

方式1:save

客户端会卡顿一段时间,什么事情都做不了

方式2:bgsave

后台保存,客户端不会卡顿,当lastsave值更新时,说明保存成功了

JAVA面试准备之Redis Redis持久化方式_第1张图片

 

自动化触发RDB持久化的方式:

JAVA面试准备之Redis Redis持久化方式_第2张图片

JAVA面试准备之Redis Redis持久化方式_第3张图片

JAVA面试准备之Redis Redis持久化方式_第4张图片

JAVA面试准备之Redis Redis持久化方式_第5张图片

 

AOF

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

 

AOF配置

redis安装目录:Redis.conf

AOF默认是关闭的

打开AOF:

 

AOF文件默认的名字:

 

配置AOF文件的写入方式:

 

always:一旦缓存区的数据发生变化,就将缓存区内容写入AOF中

everysec:将缓存区内容,每隔一秒写入AOF中,推荐

no:将写入AOF的方式交由操作系统来决定,一般操作系统会等缓存区被填满,才会同步数据到磁盘当中

 

也可以使用命令打开AOF:

Src目录下生成了appendonly.aof文件

JAVA面试准备之Redis Redis持久化方式_第6张图片

JAVA面试准备之Redis Redis持久化方式_第7张图片

Redis数据的恢复

RDB和AOF文件共存情况下的恢复流程

JAVA面试准备之Redis Redis持久化方式_第8张图片

JAVA面试准备之Redis Redis持久化方式_第9张图片

 

你可能感兴趣的:(Redis)