redis的持久化
admin
2023-02-07 14:20:12
0

为什么要持久化?在不考虑服务器宕机的情况下,是不需要把内存中的数据保存到磁盘,来做持久化的。

持久化,就是专门为宕机准备的补救措施。redis有rdb和aof两种持久化机制。

一、RDB (Redis DataBases)

原理:

redis的持久化

当前进程fork出一个子进程,子进程循环遍历所有的数据,并将数据保存到RDB文件。

时机

按照配置文件设置的策略,来持久化数据。

配置

save 900 1
save 300 10
save 60 10000

二、AOF (AppendOnly File)

原理:

redis的持久化
redis会将收到的,客户端发送过来的每一个写命令,都追加到aof文件的最后。

时机:

每次写命令,都会记录下操作。

配置:

appendonly yes

#默认不需要修改,最低64m开始重排,重排比率是上次的一倍,128m,256m,512m这样。
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

三、RDB和AOF的比较

持久化:

RDB等待写入条件,频率低,如果一次写入的数据较多,有可能带来服务器卡顿。

AOF马上记录每次写命令,频率高,每次写入的数据很少;生成的文件会比RDB生成的大。

AOF记录数据更及时,丢数据的可能更小。

数据恢复:

RDB恢复数据时,直接从RDB文件读取数据,非常快速。

AOF恢复数据时,需要一条一条命令,操作redis服务器,效率较低。


四、AOF的指令重排

aof的指令为什么需要重排:

set aa 1

set aa 2

set aa 3

三条指令,其实只需要保存最后一条就可以了,指令重排的意义就是,将三条变成一条set aa 3。

redis的持久化

当前进程fork出一个子进程,由子进程完成指令重排。

需要注意的是,在子进程进行指令重排的过程中,如果出现新的指令,主进程做两件事情:

1.将指令追加到老的aof文件末尾;

2.将指令保存到缓存中。缓存中的数据,在子进程完成指令重排之后,全部追加到新的aof文件尾部。


五、如何选择持久化的方式

经过上面的分析,我们已经知道rdb和aof各自的优势和缺点。可以根据具体的业务场景,选择合适的方式。

当然,同时使用两种方式也是可以的。

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...