目录
首先说一下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 的一共有三种触发方式 :
- save (同步命令)
- bgsave(异步快照命令)
- 自动触发(通过配置 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 每秒落库来落库到磁盘。