Redis数据持久化

RDB

默认开启
rdb文件默认保存在当前运行目录

save命令会让redis执行一次rdb(是由redis主进程来完成的,会阻塞其他命令)
当自己主动停止redis服务时(Ctrl+C),redis会自动的执行一次rdb(执行save)

bgsave命令是由子进程来执行rdb
redis内部有触发RDB的机制,可以在redis.conf文件中找到
save 900 1 # 表示在900秒内,如果至少有一个key被修改,则执行bgsave
save "" # 表示禁用RDB
bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据.
完成fork后子进程读取内存数据并写入RDB文件中.

页表:虚拟内存与物理内存之间的映射
fork时会把页表拷贝给子进程
fork会把共享内存标记为readOnly,这块内存数据只能读不能写,直到子进程完成rdb
当主进程接收到写操作时,会拷贝一份数据,执行写操作

在这里插入图片描述

AOF

Append Only File,默认是关闭的
将redis接收到的所有的写命令都记录在AOF文件中

appendfsync always # 每次执行完写命令,然后把该命令写入aof文件(都是由主进程完成的)
appendfsync everysec # 写命令执行完先放入AOF缓冲区,每隔1秒将缓冲区数据写到aof文件(默认方案)
appendfsync no # 由OS决定何时将AOF缓冲区中内容写入aof文件

# Redis remembers the size of the AOF file after the latest rewrite 
# (if no rewrite has happened since the restart, the size of the AOF at startup is used).
bgrewriteaof命令可以重写aof文件,减小aof文件体积,进行编码压缩以及删去已经无意义的命令
auto-aof-rewrite-percentage 100 # 当体积比上次的体积翻倍时,会触发bgrewriteaof
auto-aof-rewrite-min-size 64mb # 当体积超过64mb时,会触发bgrewriteaof

在这里插入图片描述

AOF数据完整性更好
同时启用了RDB和AOF,Redis启动时的数据恢复会以AOF优先

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值