了解了一下 redis 的两种持久化方式
实际上是有三种的
分别是使用
RDB 是 redis database 的简称,采用二进制方法进行存储。可以使用手动和自动两种方式进行存储
手动:save、bgsave。save 的话会阻塞 redis 进程。bgsave 会消耗更多的内存。
AOF 是使用纯文本方式进行存储的 redis 储存方式。因为是文件逐行存储,所以一般速度没有 rdb 快。
混合模式 结合了上面两种方法。但是并非是仅仅开启了上面两种持久化方式,而是将两种持久化方式存储在同一个文件中,依赖于 aof 方式,因此 aof 要默认开启。
开启 RDB
save 900 1
save 300 10
save 60 10000
dbfilename “dump.rdb” # 持久化文件名称
dir “/data/dbs/redis/6381” # 持久化数据文件存放的路径
上面配置即为开启 rdb 的方式
save 900 1 就是 900 秒内有 1 次储存,其他配置以此类推
当然,默认的自动存储使用的 bgsave
开启 AOF
dir “/data/dbs/redis/6381” #AOF 文件存放目录
appendonly yes # 开启 AOF 持久化,默认关闭
appendfilename “appendonly.aof” #AOF 文件名称(默认)
appendfsync no #AOF 持久化策略
auto–aof–rewrite–percentage 100 # 触发 AOF 文件重写的条件(默认)
auto–aof–rewrite–min–size 64mb # 触发 AOF 文件重写的条件(默认)
上面的配置即是开启 aof 配置的方式,很多配置中,都是 aof 和 rdb 同时开启。
AOF 的持久化策略有三个:
# always: 每次写入都立即同步到磁盘,最安全,但性能最低。
# everysec: 每秒同步一次,默认推荐值,平衡性能和安全性。
# no: 由操作系统自行决定何时同步,性能高但可能丢失数据。
如果是较为重要的数据可以采取 everysec,缓存等可以考虑使用 no
重写 AOF 的策略有两个
1 是超过本身的 100%
2 是最小大小超过 64M
如果大小没有超过 64M,即使是 1 的策略超过了之前的 100% 也不会生效
开启混合模式的持久化
aof-use-rdb-preamble yes #如果这里设置为 no,aof 文件默认只记录文本格式
appendonly yes
appendfsync everysec #同时将 aof 和 aof 的储存策略标注