如何理解 redis 持久化,有几种方式?

其实redis就是一种高级的以键值对形式存储数据的数据库,而它的好处就是他可以支持数据的持久化,其实redis之所以会有这样的优点,主要是因为,redis的数据都是存放在内存中的,如果不配置持久化,那么在redis进行重启的时候,就会造成数据的丢失,于是redis开启了数据的持久化功能,将所有的数据保存到磁盘中,当redis重启之后,就可以直接从磁盘中恢复数据,所以redis的持久化功能,主要就是为了防止服务器宕机而造成的数据丢失。

redis也提供了两种不同的持久化方式:

第一种是:RDB持久化,RDB是Redis DataBase的缩写,redis默认的持久化方式,简单来讲就是将redis在内存中的数据库记录按照指定的时间转存到磁盘当中,其实就是一定时间间隔内对你的数据进行一个快照存储,在默认的情况下,redis在完成快照存储后就会将这些数据保存在一个dump.rdb的文件中,当redis运行的时候,RDB就会将内存中的数据集存储到磁盘当中,在redis进行重启的时候,就可以通过载入RDB文件到RDB程序进行数据的同步恢复。

优点:因为服务区在执行保存dump.rdb文件时,首先需要redis去调用forks()时,就会同时拥有父进程和子进程,而子进程其实就是将这些数据写入到一个临时的RDB文件当中,当子进程完成写入后,redis就会用一个新的RDB文件替换掉旧的RDB文件,并且将旧的RDB文件删除,所以因为这样的工作方式,RDB持久化方式就只有一个dump.rdb文件,非常方便持久化,而且由子进程完成写的操作,让主进程可以继续处理命令,这样可以使得IO最大化,使用单独的子进程来进行持久化,主进程就不会进行任何的IO操作,这样可以保证redis的高性能。

缺点:因为RDB是按照指定的时间每隔一段时间就要进行一次持久化,如果在持久化的过程中redis发生故障,那么依然会发生数据丢失,所以一般都在数据要求不太严谨的时候使用这种方式。

第二种:AOF持久化,AOF是Append Only File的缩写,默认AOF是不开启的,需要在redis.conf配置文件中手动开启,这种持久化方式就是将redis执行的每一次命令记录到单独的日志文件当中,当还原数据时,只需要将这些备份的指令再重新执行一遍即可。redis的配置文件中存在三种不同的AOF持久化方式,分别是:

appendfsync always:每次有数据修改发生时都会写入AOF文件,这样会严重降低Redis的速度

appendfsync everysec:每秒钟同步一次,将多个写命令同步到硬盘

appendfsync no:让操作系统决定何时进行同步

而且由于AOF持久化对日志文件的写入操作采用的是append模式,使用这种模式的好处就是,即使在写入的过程中出现宕机现象,也不会破坏日志文件中已经存在的内容,然而如果我们本次操作只写入了一半数据就出现了系统崩溃问题,也不用担心,在redis下一次启动之前,我们可以通过redis-check-aof工具来帮忙解决这种数据一致性的问题。

优点:数据安全,因为AOF有写回策略机制,比如:always,意思就是可以在每个执行命令执行完之后,立刻同步的将日志写回磁盘,而且AOF持久化快,能够减少数据丢失的量,在配置了everysec的情况下最多只会丢失秒级数据。

https://b23.tv/8mP4VCF

https://b23.tv/HtAoFSY

https://b23.tv/AQfC1t0

https://b23.tv/SxNsEZm

缺点:在同等数据量的情况下,AOF文件的大小要比RDB文件大很多,如果使用它进行内存的恢复需要一定的时间。

针对以上阐述,在选择持久化方式上,一般来说,如果想要达到足以媲美关系型数据库的数据安全性,那么就应该同时使用两种持久化功能(redis4.0开始支持RDB和AOF混合持久化),在这种情况下,当redis重启的时候就会优先载入AOF文件来恢复原始数据,因为通常这种情况下,AOF文件保存数据集要比RDB文件保存数据集更加完整,如果你非常关心你的数据,但是仍然可以承受一些保持在分钟之内的数据丢失,那么你可以只选择使用RDB持久化,因为它可以更快,但是会有一些分钟之内的数据丢失是它的缺点。

有很多人都只使用AOF持久化,但其实不太推荐,因为定时生成RDB快照非常方便于进行数据库的备份,并且RDB恢复数据集的速度也要比AOF恢复的速度快,除此之外,使用RDB也可以有效规避AOF程序的bug,当然如果你只希望你的数据在服务器运行的时候存在,也可以不选择使用任何持久化方式。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容