redis 持久化

文章目录

RDB

在配置文件中可以配置rdb的规则

save 900 1 #900秒内一次操作
save 60 10000 #60秒内10000次操作
dbfilename dump.rdb #文件名
dir /vaar/lib/etc/6379 #文件路径

通过fork出子进程来保存数据集到硬盘上(子进程可以得到父进程中export得环境变量,并且子父进程对其修改后对方得到得仍是原值)
缺点

当数据较大,fork子进程保存数据耗时
数据丢失相对多

优点

文件相对小、恢复速度按快

SAVE

保存数据,会阻塞

BGSAVE

异步保存数据,fork一个子进程将数据保存到磁盘

AOF

优点

使用默认的每秒fsync策略,最多丢失1秒的数据

缺点

对于相同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积
根据所使用的 fsync 策略,AOF 的速度可能会慢于 RDB
appendonly yes #开启aof
appendfilename "appendonly.aof" #文件名
# appendfsync always
appendfsync everysec #三种aof策略
# appendfsync no

将内存数据写到内核的缓冲区中,然后通过flush刷到磁盘上
everysec:每隔一秒将写到内核中的数据刷到磁盘上
aof-use-rdb-preamble yes

开启混合持久化,更快的AOF重写和启动时数据恢复

重写 bgrewriteaof:优化aof文件体积

4.0版本以前 删除抵消的指令、合并重复的指令(不开启混合持久化)
4.0版本后  将老的数据以rdb形式写到aof文件中,将新增的操作append到aof文件中(开启混合持久化)

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

触发自动重写,当aof文件达到64m自定重写。percentage指定百分比为0,将禁用aof自动重写功能

no-appendfsync-on-rewrite no

如果为no 当有子进程在写入数据到磁盘中时就主进程不会把写操作append到aof文件 这样做可能会丢失更多数据但避免阻塞
如果为yes 当有子进程在写入数据到磁盘中时同时主进程会把写操作append到aof文件中,这样不会丢失更多数据,但会造成阻塞

aof-load-truncated yes

yes 末尾被截断的 AOF 文件将会被加载,并打印日志通知用户
no  服务器将报错并拒绝启动.使用redis-check-aof 工具修复AOF文件,再重新启动

如果使用flushall删除所有数据后没用重写aof文件(比如bgrewirte),只需将添加到aof文件结尾的flush命令删除重启即可恢复数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值