AOF数据持久化(理论)
admin
2023-05-21 08:02:34
0

持久化原理:

       AOF<二进制文件>比RDB方式有更好的持久性。

       redis会将每一个收到的写命令都通过write函数追加到文件最后,类似msyql的binlog。

       当redis重启时,会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

         

优点:可以保持更高的数据完整性。

            如果设置追加file的时间是1s,那么redis发生故障,最多会丢失1s的数据;

            如果日志写入不完整,支持redis-check-aof来进行日志修复;

            AOF文件没被rewrite之前(文件过大时会对命令进行合并重写),

            可以删除其中的某些命令(比如误操作的flushall)。

缺点:AOF文件比RDB文件大,且恢复速度慢。 

   

   AOF默认关闭。

   

配置文件相关参数:

            appendonly yes

            appendfilename ""     #AOF保存的文件名

            

同步方式相关的配置:

            appendfsync always    #一旦插入命令,立即同步到磁盘,完全的持久化,但是速度慢,不推荐

            appendfsync everysec        #AOF每秒进行同步

            appendfsync no         #不自动同步,性能最好,但是持久化没有保证

            

存储过程:

         将快照内容以命令的形式追加到AOF文件中,

         所以随着追加,AOF文件会越来越大,保存的AOF文件存储了执行的所有命令,

         所以可以进行修改文件来撤销输错的命令(在重写之前,如果重写了就没有办法了) 

         

对AOF文件进行重写:(解决AOF文件越来越大的问题)

         redis-cli -h ip -p port bgrewriteaof

         

重写命令的操作过程:

         在当前的快照保存结束后,开启一个子进程,将AOF文件进行重写,

         合并set命令等操作到一个临时文件,达到缩小文件大小的目的。

         重写结束后,将临时文件替换为新的AOF文件。

         (重写过程中如果有新的redis操作命令,会提交到缓存中,重写结束后追加到AOF文件内) 

         

         说明:redis2.4以上版本,重写机制自动触发。触发的相关redis.conf配置如下:

         auto-aof-rewrite-percentage 100

         当目前的AOF文件大小超过上一次重写文件大小的百分之几时进行重写,

         如果没有重启过,则以启动时的AOF文件大小为依据)

         auto-aof-rewrite-min-size 64mb(允许重写的最小AOF文件大小);

         

数据恢复:

        重启redis服务,前提是配置文件必须设置了appendonly yes,然后会从appendfile的文件加载文件。

        反之是从RDB中加载数据的。


相关内容

热门资讯

小米澎程72小时一线预售快报出... 来源:CNMO科技 【CNMO科技消息】8月3日,CNMO科技注意到,车fans创始人@孙少军发布了...
海评面:“中国商业航天正以惊人... 7月22日,引力一号遥四运载火箭在上海东部海域点火升空。(图/新华社) “中国商业航天领域正以惊人的...
第三届雷达学术前沿大会在长沙举... 中新网长沙8月2日电(王曼)8月2日,第三届雷达学术前沿大会在长沙启幕,雷达及相关领域8位院士,12...
埃及、卡塔尔和土耳其发表联合声... △加沙地带(资料图)当地时间3日,埃及、卡塔尔和土耳其三国发表联合声明,强烈谴责以色列在加沙地带持续...
鹤壁市汽车电子电气行业技术宣讲... 为助推我市汽车电子电器产业智能化、数字化和绿色化转型升级。7月30日,由市工商联、市汽车电子电器商会...
原创 i... 新一代系统陆续推出,多方面进行升级,尤其是UI设计、AI智能体、流畅度等方面,助力新一代旗舰机全面发...
国产最强AI再次选择开源!阿里... IT之家 8 月 3 日消息,阿里巴巴千问 Qwen3.8-Max 人工智能模型今日(8 月 3 日...
特朗普:在伊朗战争期间,石油公... 美国有线电视新闻网(CNN)8月3日报道,特朗普周一表示,由于与伊朗战争相关的油价飙升,雪佛龙和埃克...
特朗普:与伊朗的谈判将分两阶段... △当地时间8月3日,美国总统特朗普在白宫回答记者提问。当地时间8月3日,美国总统特朗普在白宫回答记者...
汇艺银河里首届微醺节圆满收官 ... 多元业态协同联动,探索郑东商圈夜间消费新场景首届汇艺银河里微醺节圆满收官。活动立足郑州高铁东站商圈核...