Redis 持久化、防止数据不丢失

RDB持久化(快照)

  • 将某个时间点的所有数据生成快照,存放到硬盘上。当数据量很大时,会很慢。
  • 可以将快照复制到其它服务器从而创建具有相同数据的服务器副本。
  • 如果系统发生故障,将会丢失最后一次创建快照之后的数据。

Redis默认的持久化方式。按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件。即Snapshot快照存储,对应产生的数据文件为dump.rdb,通过配置文件中的save参数来定义快照的周期。(
快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。)

AOF持久化(即时更新)

  • 将写命令追加到 AOF 日志文件(Append Only File)。
  • redis可以再AOF文件体积变得过大时,自动在后台对AOF进行重写。
  • AOF文件有序地保存数据库执行的所有写入操作,这些写入操作以redis协议的格式保存,因此,AOF文件的内容非常容易被人读懂,对文件进行分析也很轻松。

AOF文件的体积通常大昱RDB文件
AOF的进度可能会慢于RDB

有以下同步选项(同步频率): always 每个写命令都同步;everysec 每秒同步一次;no 让操作系统来决定何时同步。
  everysec 选项比较合适,可以保证系统崩溃时只会丢失一秒左右的数据,并且 Redis
每秒执行一次同步对服务器性能几乎没有任何影响;

Redis会将每一个收到的写命令都通过Write函数追加到文件最后,类似于MySQL的binlog。当Redis重启是会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

当两种方式同时开启时,数据恢复Redis会优先选择AOF恢复。

1.3 redis查看持久化信息命令

# Persistence
loading:0
# rdb_changes_since_last_save:离最近一次成功生成rdb文件,写入命令的个数,即有多少个写入命令没有持久化
rdb_changes_since_last_save:209898
rdb_bgsave_in_progress:0
rdb_last_save_time:1630413928
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:0
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:0
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:9117696
aof_current_size:63977468
aof_base_size:824753
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:1
  1. loading:服务器是否正在载入持久化文件
  2. rdb_changes_since_last_save:离最近一次成功生成rdb文件,写入命令的个数,即有多少个写入命令没有持久化
  3. rdb_bgsave_in_progress:服务器是否正在创建rdb文件
  4. rdb_last_save_time:离最近一次成功创建rdb文件的时间戳。当前时间戳 - rdb_last_save_time=多少秒未成功生成rdb文件
  5. rdb_last_bgsave_status:最近一次rdb持久化是否成功
  6. rdb_last_bgsave_time_sec:最近一次成功生成rdb文件耗时秒数
  7. rdb_current_bgsave_time_sec:如果服务器正在创建rdb文件,那么这个域记录的就是当前的创建操作已经耗费的秒数
  8. rdb_last_cow_size:RDB过程中父进程与子进程相比执行了多少修改(包括读缓冲区,写缓冲区,数据修改等)。
  9. aof_enabled:是否开启了aof
  10. aof_rewrite_in_progress:标识aof的rewrite操作是否在进行中
  11. aof_rewrite_scheduled:rewrite任务计划,当客户端发送bgrewriteaof指令,如果当前rewrite子进程正在执行,那么将客户端请求的bgrewriteaof变为计划任务,待aof子进程结束后执行rewrite
  12. aof_last_rewrite_time_sec:最近一次aof rewrite耗费的时长
  13. aof_current_rewrite_time_sec:如果rewrite操作正在进行,则记录所使用的时间,单位秒
  14. aof_last_bgrewrite_status:上次bgrewriteaof操作的状态
  15. aof_last_write_status:上次aof写入状态
  16. aof_last_cow_size:AOF过程中父进程与子进程相比执行了多少修改(包括读缓冲区,写缓冲区,数据修改等)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值