一 快照持久化
简介:它可以将存在于某一时刻的所有数据都写入硬盘里面
reids.conf中的相关配置文件
stop-writes-on-bgsave-error yes 在bgsave出错时是否仍然继续执行写命令
save 900 1 每90S内如果有一次写操作,就执行一次bgsave命令
dbfilename dump.rdb //快照被写入的位置
dir ./ //指定保存快照的路径
关键点:
-
如果在新的快照文件创建之前,redis,系统或者硬件这三者之中的任意一个崩溃了,那么redis将丢失最近一次创建快照之后的数据
-
当客户端向redis发送BGSAVE命令时,可以创建一个快照,此时redis会fork一个子进程来将快照写入硬盘,而父进程还是继续处理命令请求
-
save 900 1 每90S内如果有一次写操作,就执行一次bgsave命令
-
当有一个redis服务器连接另一个服务器,并向对方发送sync命令来开始一次复制操作的时候,主服务器会执行BGSAVE命令.复制的具体过程后续文章有说明
AOF持久化
简介:
该方式叫只追加文件,他会在执行写命令时,将被执行的写命令复制到硬盘里面
.简单来说,AOF持久化会将被执行的写命令写到AOF文件的末尾,以此来运行数据发生的变化,因此,redis只要从头到尾重新执行一次AOF文件包含的所有写命令,就可以恢复AOF文件所记录的数据集
相关配置文件:
appendonly no 是否打开aof持久化方式
appendfsync everysec/no/always aof的同步频率
auto-aof-rewrite-percentage 100 配置在什么条件下重写aof文件,防止aof文件过长,过于冗余
auto-aof-rewrite-min-size 64mb
关键点:
1appendfsync :
- always模式,每个redis写命令都会被写入硬盘,但是这种策略会让redis处理命令的速度收到硬盘性能的影响,因为硬盘需要进行大量的写入
- everysec模式,让Redis以每秒一次的频率对aof文件进行同步,该模式和不适用aof持久化的性能相差无几,但是可以保证,即使系统出现了崩溃,用户最多也只会丢失一秒之内产生的数据,一般推荐用该模式