Redis的持久化机制

一、什么是Redis的持久化?

Redis是一种基于内存的非关系型数据库,其大部分的操作都直接在内存中执行,而内存中的数据是不能持久储存的,如果服务器宕机关闭会导致内存中的数据丢失,因此Redis就需要将内存中的数据持久化到磁盘中,便于长久的保存。

Redis提供了两种持久化的方式:

  1. RDB(Redis DataBase)
  2. AOF(Append Only File)

二、RDB

1.什么是RDB:

RDB是Redis默认的持久化方法。按照一定的时间间隔将内存中的数据以快照的形式保存到磁盘中。Redis主进程会单独fork一个子进程来执行RDB持久化,整个过程中主进程不进行任何的IO操作,从而避免了对主进程造成性能的影响。在RDB持久化过程中,会先将数据写入一个临时的文件,等持久化结束后替换已持久化好的dump.rdb文件。

2.RDB默认的持久化配置

save 900 1
# 如果在900秒内有1次改动(增删改),则保存到硬盘中

save 300 10 
# 如果在300秒内有10次改动(增删改),则保存到硬盘中

save 60 10000
# 如果在60秒内有10000次改动(增删改),则保存到硬盘中

3.RDB触发条件:

  1. 满足save规则的情况下会触发RDB持久化
  2. 执行flushall命令(清空整个 Redis 服务器的数据)
  3. 退出redis

4.RDB的优缺点:

优点

  1. 相比AOF,RDB适用于有比较大的据量的时候。
  2. 性能最大化,通过fork子进程来完成持久化操作,对主进程的性能影响很小。

缺点

  1. 需要一定的时间间隔进行操作,如果意外宕机会导致最后时间间隔内的的数据丢失。
  2. fork子进程的时候,会占用一定的内存空间

三、AOF

1.什么是AOF:

与RDB通过快照方式持久化不同,AOF是通过日志的形式来记录每个写操作的。在redis执行过程中,AOF会将所有写操作指令记录下来,追加到日志文件的末尾。默认每秒写入一次,配置文件中可设置成:每次修改都同步、每秒同步、不同步三种情况。

注:当两种持久化方式同时开启的时候,Redis的数据恢复会优先选择AOF进行恢复。

2.AOF的优缺点:

优点

  1. 数据的完整性更好。相比于RDB,AOF可以将每条指令都记录下来,即使服务器意外宕机,也不会丢失数据。
  2. redis自带了修复工具redis-check-aof。即使AOF记录的指令出错,比如说记录的时候服务器宕机导致写入了不完整的数据,也能用redis-check-aof进行修复。

缺点

  1. AOF持久化文件比RDB文件大,恢复速度慢。
  2. 数据量比较大的时候,AOF比RDB的启动效率更低。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值