redis 的 RDB 和 AOF

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:47   1124   0

目录

首先说一下RDB 和 AOF 的不同

RDB

RDB触发方式

RDB配置

AOF

rewrite

AOF rewrite 的两种触发机制

配置


首先说一下RDB 和 AOF 的不同

1 RDB 是对当时redis 内存的一个快照,每次备份的都是当时内存的全量数据 ,操作较重,比较耗时

2 AOF 是对用户所做操作的一个日志记录,可以根据策略调整日志操作落盘策略 ,如果操作日志过大的话,可以使用rewrite方式进行操作的简化,即比如 我们 set string1 weijinhao set string1 we set string1 weijinghaoaaa 那么rewrite 后记录的就是rewite当时的最终结果 weijinhaoaaa

之后我们看看RDB 和AOF是如何配置的

RDB

RDB触发方式

RDB 的一共有三种触发方式 :

  1. save (同步命令)
  2. bgsave(异步快照命令)
  3. 自动触发(通过配置 save的触发条件)

RDB配置

我们看看在配置文件中如何配置

################################ SNAPSHOTTING  ################################
####该配置为自动触发条件   save   多少秒钟  多少个改变进行 rdb 的操作,我们基本上进行关闭
#save 900 1
#save 300 10
#save 60 10000

#备份出错后停止写入
stop-writes-on-bgsave-error yes

#是否启用压缩模式
rdbcompression yes

#格式检查rdb
rdbchecksum yes

# rdb 的文件名称
dbfilename dump-6379.rdb

#存放的路径
dir /develop/redis/data/data

说完了RDB 我们在来看看 AOF

AOF

AOF 基本上有两个知识点,第一个 就是aof的rewrite 第二个 就是aof 的配置

rewrite

我们先来说说aof 的rewite 操作 ,如果操作日志过大的话,可以使用rewrite方式进行操作的简化,即比如 我们 set string1 weijinhao set string1 we set string1 weijinghaoaaa 那么rewrite 后记录的就是rewite当时的最终结果 weijinhaoaaa,重写的原因,是整理aof,相当于 一个rdb 文件了。

AOF rewrite 的两种触发机制

BGREWRITEAOF (命令)

自动触发(配置文件配置)

配置

说完了这些我们在来看看AOF 的配置

############################## APPEND ONLY MODE ###############################

#首先是是否开启aof  aof比rdb 的优先级要高

appendonly yes

# 设置aof 文件的名称

appendfilename "appendonly-6379.aof"

#aof 的同步策略,no 是使用操作系统同的刷新机制  always是一条操作一次落盘  everysec是1秒落一次盘
# no: don't fsync, just let the OS flush the data when it wants. Faster.
# always: fsync after every write to the append only log. Slow, Safest.
# everysec: fsync only one time every second. Compromise.

appendfsync everysec


#则表示 在rewrite的时候不进行 正常aof的追加操作,注意这会丢失数据

no-appendfsync-on-rewrite no

#触发重写的时机,current_size > auto-aof-rewrite-min-size 或current_size -aof_base_size #/aof_base_size > auto-aof-rewrite-percentage 时进行重写

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 100mb

# 如果aof文件导入失败的话,是否能够启动程序
aof-load-truncated yes

但是说了这些,那么我们项目中的redis 到底该如何使用呢,首先,我们两个都会使用 但是基本上会关闭 rdb 的自动触发机制 通过手动触发进行内存快照的全量备份操作,其次,我们使用 aof使用every secd 每秒落库来落库到磁盘。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP