脑图:
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出一条新进程来将文件重写。