Redis 持久化机制
很多时候我们需要持久化数据也就是将内存中的数据写⼊到硬盘⾥⾯,⼤部分原因是为了之后重
⽤数据(⽐如重启机器、机器故障之后恢复数据),或者是为了防⽌系统故障⽽将数据备份到⼀
个远程位置。
Redis 不同于 Memcached 的很重要⼀点就是,Redis ⽀持持久化,⽽且⽀持两种不同的持久化
操作。Redis 的⼀种持久化⽅式叫快照(snapshotting,RDB),另⼀种⽅式是只追加⽂件
(append-only file, AOF)。这两种⽅法各有千秋,下⾯我会详细这两种持久化⽅法是什么,怎
么⽤,如何选择适合⾃⼰的持久化⽅法
1、快照(snapshotting)持久化(RDB)
Redis通过创建快照来获得存储在内存中某个时间点上的副本。
作用:
1、Redis创建快照之后,可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本(Redis主从结构,主要用来提高Redis的性能)
2、还可以将快照留在原地以便重启数据库的时候使用。
快照持久化是Redis默认采用的持久化方式,在Redis.conf配置文件中默认有此下配置:
save 900 1 #在900秒(15分钟)之后,如果⾄少有1个key发⽣变化,Redis就会⾃动触发
BGSAVE命令创建快照。
save 300 10 #在300秒(5分钟)之后,如果⾄少有10个key发⽣变化,Redis就会⾃动触发
BGSAVE命令创建快照。
save 60 10000 #在60秒(1分钟)之后,如果⾄少有10000个key发⽣变化,Redis就会⾃动
触发BGSAVE命令创建快照。
2、AOF(append-only file)持久化
与快照持久化相比较,AOF持久化的实时性更好,因此成为了主流的持久化方案。
默认情况下没有开启AOF方式的持久化,可以通过appendonly参数开启:
appendonly yes
参数效果:
开启AOF持久化后每执行一条修改Redis中的数据的命令,Redis就会把该命令写入到磁盘中的AOF文件。
AOF文件的保存位置个RDB文件的存储位置相同,都是通过dir参数设置的,默认的文件名是appendonly.aof
在 Redis 的配置⽂件中存在三种不同的 AOF 持久化⽅式,它们分别是
appendfsync always #每次有数据修改发⽣时都会写⼊AOF⽂件,这样会严重降低Redis的速度
appendfsync everysec #每秒钟同步⼀次,显示地将多个写命令同步到硬盘
appendfsync no #让操作系统决定何时进⾏同步