redis数据持久化

    redis作为一种内存数据,我们知道数据保持在内存中很快就会消失,所以redis采取了两种措施对数据进行持久化,那就是RDB和AOF,两者的不一样之处在于,RDB是快照模式而AOF日志模式

快照模式---RDB:

    RDB是一种存储在硬盘中的二进制形式的文件,redis通过命令将redis内存中的数据完整的生成一个快照保存在硬盘当中形成一个RDB文件,每当redis进行重启时,redis就会将RDB文件载入内存中以对数据进行恢复,RDB还可以作为redis主从复制的复制媒介对数据进行传输,RDB有同步和异步两种形式的触发方式

同步(Save):通过对redis执行save命令可以使用RDB同步的对内存中的数据进行一个快照的备份,由于RDB是一个单线程的同步命令,所以在数据量比较大时会造成redis的阻塞,当redis快照完毕后会把之前老的RDB文件替换掉,保证数据数据的更新

异步(bgsave): bgsave是RDB的一种异步生成RDB的模式,bgsave通过过fork一个子程序来进行一次全量快照,虽然这种模式也会阻塞redis但是也只是fork出子程序的那一下会阻塞,相对save阻塞时间很短,但是bgsave却需要消耗内存去提供给子进程

RDB有几种触发的方式:

1、配置redis.conf,定制RDB的生成规则,让RDB自动按照这个规则执行快照:

例如:

save 900 1

save 300 30

save 60 10000

将上面的配置加入到redis.conf中,意思是900秒内至少发生一次写操作、300秒内至少发生30次写操作、60秒内至少发生10000次写操作,上述条件只要满足一项即可触发一次快照


在redis安装目录的conf目录中的redis.conf文件

2、执行shutdown关闭服务器时,也会进行一次快照执行的,执行的是bgsave

3、主从复制:配置了主从复制的情况下,主从需要进行一次全量复制时会执行RDB快照,master会自动生存一个RDB文件

演示:

配置好RBD生成的文件名dump-6379.rdb,和rdb生成的目录
执行save

执行save命令时redis被阻塞,消耗了八秒多的时间,期间进程被阻塞无法进行其他操作,

配置好的文件位置生成了相应的rdb文件
执行bgsave
执行其他命令

执行save命令时redis几乎未被阻塞,马上就可以进行其他操作,并返回了结果

查看rdb日志文件
bgsave的子程序

发现bgsave的子程序正在运行中

RDB的特点:RDB是经过二进制压缩的文件,文件非常的小加上RDB文件是直接存储的内存数据并且一般为全量内存数据,非常适合备份使用,并且适用redis发生灾难性的数据恢复,不过RDB 也有自身的缺点,因为要进行全量的复制,所以快照时间比较长,不能进行实时性数据持久化,如果在RDB快照过程中redis宕机,就会发生部分数据丢失的情况。

日志模式---AOF:

    AOF是一种持续增量的备份日志,redis默认是将其关闭,它是记录了redis的写指令,redis的内存修改指令都会被记录到日志文件中,在redis进行AOF数据恢复时,会把日志记录的写指令进行重演,所以redis在启动时如果要优先加载AOF日志文件时,时间一般是非常漫长的

AOF重写

我们知道redis进行AOF数据恢复时间一般是非常漫长的,原因就在于redis对执行AOF对数据的恢复是一个命令重演的过程,针对这种情况,redis提供了对AOF日志进行优化方式:定期对AOF进行重写,以减少不必要的命令执行,达到AOF瘦身的效果,AOF重写后会把旧的AOF文件替换

AOF重写:将命令进行了缩减简化

AOF重写三种策略:

AOF在写入日志的前会把命令更新到缓冲区中,三种会对缓冲区做不同方式的取数据操作:

1、always:缓冲区中每条写命令都会写入日志文件中,缺点:这个模式io开销会比较大

2、everysec:中每秒都会把记录一次缓冲区中的数据到日志中,这个是AOF的默认模式,缺点:会丢失一秒的数据

3、no:什么时候该刷缓冲区的命令到日志中是根据系统决定,缺点:不可控制

瘦身方式有两个

1、执行bgrewriteaof,这命令一看就大概能猜到是什么情况了,bg和bgsave的bg一样是background的意思也就是异步嘛,rewriteaof可以这样表示re-write-aof大概意思不就是重写aof吗,合起来就是异步重写aof,这个命令也是和bgsave一样会对在redis中fork出一个子进程,让子进程进行aof重写

2、重写aof配置,制定aof自动重写规则:

通过排至aof的重写参数可以,自动触发aof的自动重写

auto_aof_rewrite_min_size:运行aof日志文件的最小体积,默认64mb

auto_aof_rewrite_percentage:aof日志文件的增长率

触发条件:

1、aof_current_size>auto_aof_rewrite_min_size

2、(aof_current_size - aof_base_size)/aof_base_size>auto_aof_rewrite_percentage

(aof_current_size当前aof文件大小,aof_base_size上一次重写的aof文件大小)

演示:

配置依然是在redis的安装目录的conf的redis.conf中

配置刷盘策略

选择每秒刷盘策略,默认就好


配置aof重写规则参数

配置AOF重写规则参数

增长率设置100,aof最小文件大小设置为64mb


aof默认关闭,aof文件名为appendonly.aof

appendonly为no 默认为aof为关闭状态,aof文件名默认为 appendonly.aof,修改为yes即可开启aof日志模式


通过命令开启

或者通过命令开启,如上图,设置好后重启即可开启aof模式


输入命令
输入命令后生成了aof文件

aof文件生成在我们之前配置rdb的生成位置/opt/redis/data中

aof文件的内容


执行重写命令
重新观察aof

执行bgrewriteaof aof重写,aof文件内容明显被缩减了

RDB和AOF的最优策略:

由于AOF是一个命令的重演,数据恢复的速度是很慢的,并且文件大小也是比较大,而RDB是一个内存数据的全量快照,直接进行内存数据的恢复速度是非常快的,文件是二进制的压缩文件,文件比较小,但是恢复时必定是会丢失数据的,所以两者可以互补以达到最优的策略---混合持久化:先使用RDB进行数据的恢复,而后使用AOF进行RDB快照数据缺失的补充,AOF只取RDB持久化结束这段时间的增量日志,而不是全量命令重演的策略,这样redis数据恢复的效率就会大幅度提升

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

推荐阅读更多精彩内容