Redis(二)持久化的方式,优缺点

Redis持久化将数据存入磁盘

Redis持久化的两种方式
持久化:快照方式(RDB模式,默认方式),日志追加方式(AOF模式)

1. 快照方式(RDB方式,默认文件名为dump.rdb)

RDB方式总结起来就是一种将数据以快照方式写入二进制文件中,在间隔时间内全量写入磁盘的一个过程。

优点:对于恢复操作相对比较简单,因为全量写入只需要保证一个二进制文件的恢复即可;

缺点:第一是多少间隔时间的重要性,第二是数据量大的情况下,全量写入会影响性能
 
客户端使用save/bgsave命令做一次快照持久化(save操作在主线程中保存快照,Redis是用一个主线程处理
所有的客户端请求,所以可能会阻塞所有的客户端请求,不推荐使用);

快照方式并不是增量数据,而是全量重新写入,数据量大的情况下会严重影响性能(主要是由于大量IO操作以及主
进程不断fork()子进程去处理持久化工作)。
 
快照方式是间隔时间做一次,所以如果redis意外宕机的话,就会丢失最后一次快照的后的所有数据。

2. 日志追加方式(AOF持久化)

Redis会将每一个收到的写命令都通过write函数追加到文件中(默认为appendonly.aof),当redis重启时会通
过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

缺点:相比较RDB而已AOF的文件相对较大(redis当AOF文件比较大时,可以重写),AOF的速度比RDB相对较慢;

优点:采用everysec配置,那么顶多损失前一秒的数据;不会像RDB那样损失很多(当然只是相对而言)
   AOF的文件没有被重写的话,比如当我们不小心FULASHALL,现在需要恢复。只需要AOF文件末尾中去掉该
   命令,重启Redis载入即可(即AOF文件比较容易读懂,恢复上一个状态简单)

(1) 由于OS会在内存中缓存write的修改,所以并不会立即写到磁盘上,这样可能会导致丢失部分修改,可以通过
配置来实现强制OS写到磁盘时机。
      appendonly yes //启用日志追加持久化方式
       appendfsync always //每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
      appendfsync everysec //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐使用
       #appendfsync no //完全依赖操作系统,性能最好,持久化没保证

redis提供了bgrewriteaof命令:去重重复的命令,最后替换原来的持久化日志文件。

#######两种方式conf文件#######

1. RDB默认方式配置:

# 时间策略:当满足每900s/300s/60s内至少1/10/10000次写操作,则会触发bgsave命令进行持久化,三个策略中只需要满足其中任何一条即可持久化
save 900 1     # 每900秒检查一次,如果有1条数据修改了,那么执行 rdb
save 300 10    # 每300秒检查一次,如果有10条数据修改了,那么执行 rdb
save 60 10000  # 每60秒检查一次,如果有10000条数据修改了,那么执行 rdb
# 文件名称
dbfilename dump.rdb
# 文件保存路径
dir /home/redis/data/
# 如果持久化出错,主进程是否停止写入:是为了保证数据的一致性,工作进程(子进程)持久化出错后,主进程停止写入请求
stop-writes-on-bgsave-error yes
# 是否压缩
rdbcompression yes
# 导入时是否检查
rdbchecksum yes
2. AOF日志追加方式配置:

# 是否开启aof
appendonly yes
# 文件名称
appendfilename "appendonly.aof"
# 同步方式,上文已提到
appendfsync everysec
# aof重写操作是否同步,yes则不进行同步,no则同步
no-appendfsync-on-rewrite no
# 重写触发配置
auto-aof-rewrite-percentage 100 # 当前AOF文件大小是上次日志重写时的AOF文件大小两倍时,发生BGREWRITEAOF操作。
auto-aof-rewrite-min-size 64mb # 当前AOF文件执行BGREWRITEAOF命令的最小值,避免刚开始启动Reids时由于文件尺寸较小导致频繁的BGREWRITEAOF。
# 加载aof时如果有错如何处理,忽略最后一条可能存在问题的指令
aof-load-truncated yes
# Redis4.0新增RDB-AOF混合持久化格式。
aof-use-rdb-preamble no
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值