赞
踩
持久化的目的,其实就是在Redis重启或者中途崩溃的时候能够依靠自身恢复数据,而不需要再次访问MySQL数据库,重新取得数据,增加MySQL的工作量。
在此有两种方法,RDB和AOF,两种方法都是将从MySQL得到的数据内容进行放置。
首先,介绍ROB定义中的快照(snapshot):把某一时刻的数据和状态以文件(RDB文件:dump.rdb)的形式写到磁盘上。
ROB特点:
优点:
虽然 RDB 有不少优点,但它的缺点也是不容忽视的。
如果你对数据的完整性非常敏感,那么 RDB 方式就不太适合你,因为即使你每 5 分钟都持久化一次,当 redis 故障时,仍然会有近 5 分钟的数据丢失。
所以,redis 还提供了另一种持久化方式,那就是 AOF。
打开配置文件redis.windows.conf
1、Redis 6.0.16及以下:
上图内容为:
save 900 1:每隔 900s(15min),如果有超过1个 key 发生了变化,就写一份新的 RDB 文件。
300 10:每隔 300s(5min),如果有超过 10个 key 发生了变化,就写一份新的 RDB 文件。
2、Redis 6.0.16以上:
save
:主程序中执行会阻塞当前redis服务器,直到持久化工作完成行save命令期间,Redis不能处理其他命令,线上禁止使用。
bgsave
(默认):Redis会在后台异步进行快照操作,不阻寒快照同时还可以响应客户端请求,该触发方式会fork一个子进程由子进程复制持久化过程。
lastsave
:获取最后一次成功执行快照的时间
下图为lastsave的使用方式:
redis- check- rdb
使用后效果如下:
配置文件中修改为:save后跟空格,具体结果如下图所示:
开启:
在redis配置文件redis.windows.conf中:
appendonly yes
注意:
因为采用了追加方式,如果不做任何处理的话,AOF 文件会变得越来越大,为此,redis 提供了 AOF 文件重写(rewrite)机制,即当 AOF 文件的大小超过所设定的阈值时,redis 就会启动 AOF 文件的内容压缩,只保留可以恢复数据的最小指令集。
AOF 重写的内部运行原理:
最后,在实际使用两个进行混合使用。
开启混合使用,redis配置文件中:
aof- use- rdb- preamble yes
当开启混合时,数据恢复主要使用AOF方式,重启只加载aof文件。
本文的为博主本人的学习笔记,参考的教学连接为:尚硅谷Redis零基础到进阶,最强redis7教程,阳哥亲自带练(附redis面试题)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。