7.3 redis持久化

什么是持久化:
将数据从掉电易失的内存存放到能够永久存储的设备上
Redis为什么需要持久化:
基于内存的 --关机数据就消失
Redis持久化方式:
RDB(Redis DB) --存数据 有2种形式,save直接持久化,但会阻塞;bgsave不会阻塞
AOF(AppendOnlyFile) --存命令
Redis持久化-RDB:
在默认情况下,Redis 将数据库快照保存在名字为 dump.rdb的二进制文件中
策略:
自动:按照配置文件中的条件满足就执行BGSAV
save 60 1000,Redis要满足在60秒内至少有1000个键被改动,会自动保存一次
手动:客户端发起SAVE、BGSAVE命令
redis > save
阻塞Redis服务,无法响应客户端请求
创建新的dump.rdb替代旧文件
redis > bgsave
非阻塞,Redis服务正常接收处理客户端请求
Redis会folk()一个新的子进程来创建RDB文件,子进程处理完后会向父进程发送一个信 号,通知它处理完毕
父进程用新的dump.rdb替代旧文件
SAVE 和 BGSAVE 命令:
SAVE不用创建新的进程,速度略快
BGSAVE需要创建子进程,消耗额外的内存
SAVE适合停机维护,服务低谷时段
BGSAVE适合线上执行
RDB优点:
完全备份,不同时间的数据集备份可以做到多版本恢复
紧凑的单一文件,方便网络传输,适合灾难恢复
恢复大数据集速度较AOF快
缺点:
会丢失最近写入、修改的而未能持久化的数据
folk过程非常耗时,会造成毫秒级不能响应客户端请求

Redis持久化-AOF:
Append only file,采用追加的方式保存
默认文件appendonly.aof
记录所有的写操作命令,在服务启动的时候使用这些命令就可以还原数据库
合并重复的操作,AOF会使用尽可能少的命令来记录
AOF重写触发:
手动:客户端向服务器发送BGREWRITEAOF命令
自动:配置文件中的选项,自动执行BGREWRITEAOF命令
AOF优点:
 写入机制,默认fysnc每秒执行,性能很好不阻塞服务,最多丢失一秒的数据
 重写机制,优化AOF文件
 如果误操作了(FLUSHALL等),只要AOF未被重写,停止服务移除AOF文件尾部 FLUSHALL命令,重启Redis,可以将数据集恢复到 FLUSHALL 执行之前的状态
缺点:
相同数据集,AOF文件体积较RDB大了很多
 恢复数据库速度叫RDB慢(文本,命令重演)

猜你喜欢

转载自blog.csdn.net/u011418530/article/details/80837648
7.3