(五)Redis的持久化

五、Redis持久化

1.Redis持久化的作用

什么是持久化

Redis所有数据保持在内存中,防止因Redis程序崩溃导致数据丢失,将数据的更新异步地保存到磁盘上。

持久化方式

快照:某时某点的数据的完整备份。比如:MySql Dump和Redis RDB
写日志:将每次的操作都记录到日志中。比如MySql Binlog、HBase HLog和Redis AOF

2.RDB

一种复制媒介


3种主要的触发方式:

  • save(同步)
    • 注意当数据量很大时,Redis会阻塞
    • 文件策略:
      • 如果存在老的RDB文件,则将其替换
    • 时间复杂度是O(N)
  • bgsave(异步)
    • 同样,Redis也会阻塞,但是这种通过创建子进程来完成持久化的方式速度比较快
    • 并且在执行第二步fork()之后,Redis还可以正常响应其他的客户端,因为createRDB操作是由子进程来完成的。
    • 文件策略以及复杂度与save相同
  • 自动
    • 上图配置的意思是,当在60秒内有10000条修改或者300秒内有10次修改的时候,进行自动保存操作,并且内部其实是通过bgsave实现的。
    • RDB的最佳配置一般是:其中rdbcompression yes表示启用压缩存储模式。另外,右侧还应加上rdbchecksum yes表示开启校验和。

save与bgsave对比


触发机制-不容忽略方式

  • 全量复制(主从复制)
  • debug reload:相当于不将内存中数据清空的重启方式
  • shutdown

RDB总结

  • RDB是Redis内存到硬盘的快照,用于持久化
  • save通常会阻塞Redis
  • bssave不会阻塞Redis,但是会fork新进程
  • save自动配置满足任一条件就会被执行
  • 有些触发机制不容忽视

3.AOF

RDB具有哪些问题:

  • 耗时、耗性能
  • 不可控、丢失数据
    • 备份的不及时数据就可能会丢失

AOF

运行原理

  • 创建
  • 恢复

AOF的3种策略

  • always
  • everysec
  • no

3种策略对比

AOF重写

应该要做到

  • 减少硬盘占用量
  • 加速恢复速度

两种实现方式

  • bgrewriteaof
  • AOF重写配置

    • -AOF重写触发时机:
    • AOF重写流程
    • AOF配置

RDB和AOF的选择

对比:

RDB最佳策略

AOF最佳策略

总体最佳策略

posted @ 2020-05-23 22:24  scnb  阅读(63)  评论(0)    收藏  举报