关于redis中的持久化机制

  • Post author:
  • Post category:其他


脑图:

在这里插入图片描述

1.持久化:将数据文件永久的保存到磁盘的过程 称之为数据持久化

内存中的数据:断电后消失

2.redis 中默认支持持久化机制;


a.快照持久化

:生成某个时刻的redis server 中的数据 快照 xxx.rdb格式 ,redis宕机之后,可以读取xxx.rdb格式的文件恢复数据。

创建快照的几种方式:

1.手动快照: 客户端执行bgsave 生成xxx.rdb 文件 (调用fork 函数,生成父子进程 不会阻塞redis服务)

​ 客户端执行 save 生成xxx.rdb文件 (阻塞redis服务进程)

​ 客户端调用shoutdown命令 :自动执行save指令 并且

2.自动快照:根据redis.config中配置save 选项自动触发bgsave指令(注意 save选项可以配置多个,有一个满足都可以触发快照)

save 900 1 (15分钟之内,有一个key发生变化 触发一次快照)

​ save 300 10(5分钟之内 ,有10个 key 发生变化 触发一次快照)

​ save 60 10000 (一分钟之内,有1000个key发生变化 ,触发一次照)

注意:没有触发save操作之后的文件可能丢失部分不定量数据。


b.AOF 持久化机制

1.定义:Append Only File(只追加日志文件) redis服务会接收所有客户端的写操作以命令方式记录到xxx.aof的日志文件中,只要执行一次AOF文件就可恢复redis数据。

2.开启aof持久化:

修改redis.conf 中的文件,appendonly yes

3.指定aof文件名称: 修改 redis.conf中的文件,默认是 appendfilename “appendonly.aof”

注意:日志文件存放的位置和快照文件指定的目录一致。

4.日志文件的同步频率:

​ always (每一个客户端写操作立即同步到aof文件中)

​ 优点:保证redis不丢失任何数据 缺点:大量数据消耗硬盘性能。

​ everysec (每秒将写操作同步进aof)中

​ 优点:适合一秒内有多次写操作)最多丢失1秒内的数据

​ no (完全由操作系统决定何时同步)(不推荐)

在这里插入图片描述

5.AOF文件的限制:持久文件越来越大,导致用尽物理磁盘,redis宕机

解决方案:AOF重写:将原来的aof日志文件进行压缩

重写机制:不是对原始文件进行压缩,而是生成新的日志文件 替换原始文件

重写方式 :1.bgrewriteof :将内存中的数据以命令的方式保存到临时文件中,同时会fork出一条新进程来将文件重写。

在这里插入图片描述

在这里插入图片描述



版权声明:本文为weixin_43373417原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。