第八章:Redis 持久化 RDB&AOF

1. 什么是RDB

在第一章有讲过,redis是存储在内存中,并在硬盘里备份一份,硬盘里的数据就是rdb文件。

  • 缺点:耗时,时间复杂度大;fork消耗内存;硬盘io性能影响;宕机save不成功导致数据丢失

2. 命令

1. 手动生成RDB
  • save #生成rdb文件(同步命令,会造成redis阻塞)
  • bgsave #生成rdb文件(异步命令,利用系统线程fork来处理)
2. 自动生成RDB
配置 seconds changes
save 900 1
save 300 10
save 60 10000

redis自动会在一个标准内(可根据需求选择更改),自动调用bgsave生成RDB文件dump.rdb。标准图:

配置 seconds changes
save 900 1
save 300 10
save 60 10000

3. 快照配置

将DB保存到磁盘的规则定义(快照)
格式:save <seconds> <changes>
例子:save 900 1 //在900秒(15分钟)内如果至少有1个键值发生变化 就保存
save 300 10 //在300秒(6分钟)内如果至少有10个键值发生变化 就保存
save 900 1 //每一条表示一个存盘点
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes:如果启用如上的快照(RDB),在一个存盘点之后,可能磁盘会坏掉或者权限问题,redis将依然能正常工作
rdbcompression yes:是否将字符串用LZF压缩到.rdb 数据库中,如果想节省CPU资源可以将其设置成no,但是字符串存储在磁盘上占用空间会很大,默认是yes

rdbchecksum yes:rdb文件的校验,如果校验将避免文件格式坏掉,如果不校验将在每次操作文件时要付出校验过程的资源新能,将此参数设置为no,将跳过校验

dbfilename dump.rdb:转储数据的文件名

dir ./data:redis的工作目录,它会将转储文件存储到这个目录下,并生成一个附加文件

image.png

1. 什么是AOF

只要往redis里写入一条命令,它就会把该日志写到aof文件里。

2. 配置(三种写入策略和AOF重写)

1. AOF写入策略
  1. always 策略: 只要往redis写入一条命令,就会把该命令写入缓冲区,然后慢慢的写入aof文件。(IO开销大)
  2. everysec策略(常用): 每秒一次fsync写入aof文件(可能会丢失一秒数据)
  3. no策略: 不用管,系统决定什么时候写入aof文件。(不可控)
2. AOF重写

为什么要重写呢?我们说过AOF是记录每一条命令,那如果我set hello world 之后又set hello fant,AOF文件里还是会有两条记录,但是我们只需要知道最后一条有用记录即可。或者说多条单个命令合成一条批量命令。
通俗的说:重写是为了对原生aof日志进行精简优化。

重写两种方式
  1. bgrewriteaof 类似bgsave一样的机制。
  2. AOF重写配置
配置名 含义
auto-aof-rewrite-percentage 100 AOF文件增长率
auto-aof-rewrite-min-size 64mb AOF文件重写需要的尺寸
  • 增长率和尺寸是什么意思呢?
    尺寸:内容打到一定大小才触发aof重写
    增长率:第一次100Mb触发,增长率是2,下次就是200Mb触发
  • 那怎样获取当前配置尺寸(条件大小)呢?
    有两个统计名:
  1. aof_current_size : 当前尺寸
  2. aof_base_size 上次启动和重写的尺寸
3. AOF配置详情
appendonly yes #改为yes,打开AOF
# 只增文件的文件名称。(默认是appendonly.aof)
appendfilename appendonly.aof
#AOF写入策略
appendfsync always
#目录
dir ./bigdiskpath
#是否允许丢失数据
no-appendfsync-on-rewrite yes
# AOF重写配置尺寸和增长率
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

3. AOF实战

image.png

然后我们去/data目录看一下


image.png

cat appendonly.aof


image.png

可以看出来,world和fantj都存在,然而只有fantj是有效数据。然后我们手动重写aof(bgrewriteaof)
image.png

然后再cat一下
image.png

RDB与AOF对比区别与选择

场景 RDB AOF
启动优先级 低(相对不全) 高(日志全)
体积 小(有压缩) 大(类日志)
恢复速度
数据安全性 丢数据 策略决定
重量级

二者可以同时开启,一般也是同时开启,根据自己项目需求,选择最适合自己的策略。

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

推荐阅读更多精彩内容