Day20 Redis架构实战-持久化RDB+AOF

Redis持久化

Redis持久化模式->RDB+AOF

RDB+AOF两种模式整合在一起,可以在特定的时间产生快照资料,也保存了所有Redis Server收到的所有操作成功的日志,这样在Redis Server启动时可以先载入RDB的快照内容後,再载入AOF的日志资料,即可让资料遗失的可能降到最低.

  • Redis Server ver < 4.0
    • 优先使用AOF日志档载入,因为AOF所保存的内容较RDB更接近目前时间点.
  • Redis Server ver >= 4.0
    • 可以透过设定aof-use-rdb-preamble指定RDB档案先载入後载入AOF日志档.
    • AOF档案由两个部分组成,上半部是RDB,下半部是持续写入AOF日志档.
    • 因Redis Server启动时会先载入RDB档恢复大部分资料,然後再将RDB快照时间点後的内容透过AOF日志档恢复後续资料,通常这样因为AOF档案较小故恢复快减少资料的遗失.

https://ithelp.ithome.com.tw/upload/images/20211005/20111658PFeo6ZBpGC.png

# 需要先打开才会套用此模式
# 先载入rdb再载入aof
aof-use-rdb-preamble yes
# 模拟rdb save後再异动操作
127.0.0.1:6379> save
OK

# 执行多次操作写入aof日志档
127.0.0.1:6379> set book 111
OK
127.0.0.1:6379> set book 222
OK
127.0.0.1:6379> set book 333
OK
127.0.0.1:6379> set book 444
OK
127.0.0.1:6379> set bool 555
OK

# 关闭Redis Server 不存rdb档
127.0.0.1:6379> shutdown nosave

# 再次启动Redis Server使用自己设定好的config
./redis-server /home/redis/config/redis.conf

# 结果如下
# Loading RDB prodyced by version 6.2.5
# RDB age 2 seconds
# RDB has an AOF tail
# Reading the remaining AOF tail...
# DB loaded from append only file: 0.001 seconds

BGREWRITEAOF

AOF是记录了Redis Server所有操作成功的日志,当操作的越多档案越大,相对的启动Redis Server时所需要花费的时间就会越长,在日志内容中我们只需要关注的是Key的最後结果,所以可以透过BGREWRITEAOF将档案相同的key操作汇总成最後一个.
(此时当用户端继续操作时,Redis Server除了写入aof_buf以外,也会写入rewrite buffer,并透过Redis的父Process会fork一个子Process独立进行同步)

# 异动book的value多次
127.0.0.1:6379> set book abc
OK
127.0.0.1:6379> set book def
OK
127.0.0.1:6379> set book ghi
OK

https://ithelp.ithome.com.tw/upload/images/20211005/201116587PDuktSLLX.png

# aof日志档内容实际记录
vi appendonly.aof

https://ithelp.ithome.com.tw/upload/images/20211005/20111658wgP5tX61LA.png

# 将日志档汇总
127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started

确认AOF日志档案是否已经汇总

https://ithelp.ithome.com.tw/upload/images/20211005/20111658XInFpFAi0m.png


<<:  Day 21:401. Binary Watch

>>:  [DAY 22] _SPI协议(2)

Day2 安装<Cocoapods>,以及第三方套件<RealmSwift>

首先打开终端机输入此行 接下来系统会要求输入你电脑的密码 输入完之後按enter,之後就会自己跑,跑...

DAY3 MongoDB 连线与 IDE

DAY3 MongoDB 连线与 IDE MongoDB 的连线方式主要有三种,分别是: legac...

Day 11 : 用於生产的机械学习 - Data Labeling 资料标注

标注资料与特徵工程是处理资料重要的步骤,目的都是为了让模型效果最佳化,标注的一致性、特徵工程到位都对...

离职员工删库事件

故事依时间线汇整重点 2017年某月某日离职:曾工(行动影音部)、吴工(开发中心) 2017/02/...

Day17 用python写UI-聊聊Listbox基本操作

Listbox表单是可以显示很多选项的空件,一次可以执行一个或多个。 语法:Listbox( mas...