Redis持久化的方式有哪些?优缺点分别是什么?

2020-01-07  本文已影响0人  _情绪疯子

   持久化的目的主要是做灾难恢复,数据恢复。由于Redis的数据全都放在内存里面,如果Redis挂了,没有配置持久化的话,重启的时候数据会全部丢失。
    突然间,大量的请求过来,缓存全都无法命中,造成缓存雪崩,mysql无法承载大量的请求,造成整个系统崩溃。如果把Redis持久化做好,即使Redis故障了,也能够立即重启,对外提供服务。
Redis持久化分为两种:

  save 900 1              #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
   save 300 10             #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
   save 60 10000           #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

AOF持久化配置:
    在Redis的配置文件中存在三种同步方式,它们分别是:

  appendfsync always      #每次有数据修改发生时都会写入AOF文件。
  appendfsync everysec   #每秒钟同步一次,该策略为AOF的缺省策略。
  appendfsync no            #从不同步。高效但是数据不会被持久化。

RDB的优缺点:

AOF的优缺点:

RDB和AOF如何选择?

RDB:

rdb是Redis DataBase缩写
功能核心函数rdbSave(生成RDB文件)和rdbLoad(从文件加载内存)两个函数


rdb.png

AOF:

Aof是Append-only file缩写
每当执行服务器(定时)任务或者函数时flushAppendOnlyFile 函数都会被调用, 这个函数执行以下两个工作
aof写入保存:
WRITE:根据条件,将 aof_buf 中的缓存写入到 AOF 文件
SAVE:根据条件,调用 fsync 或 fdatasync 函数,将 AOF 文件保存到磁盘中。


aof.png

存储结构:
内容是redis通讯协议(RESP )格式的命令文本存储。

比较:
1、aof文件比rdb更新频率高,优先使用aof还原数据。
2、aof比rdb更安全也更大
3、rdb性能比aof好
4、如果两个都配了优先加载AOF

上一篇下一篇

猜你喜欢

热点阅读