redis 持久化

为了让数据在电脑重启后数据不丢失,需要将数据已某种形式同步到硬盘中

支持两种方式持久化 RDB(默认)、AOF

 

RDB  快照方式    通过快照(snapshotting)完成  进行快照的条件在用户的配置文件中定义

有两个参数组成 时间和改动key的个数  当在指定时间内被更改的键的个数大于指定的数值则会进行快照  

save 900 1

save 300 10

save 60 10000

可以存在多个条件,他们是“或”的关系,禁用自动:注释或者删掉上面的参数就行 ;上面的意思是900秒(15分)内有一个键被更改或者300秒(5分)内有十个键被更改或者60秒内有10000个键被更改则进行快照保存

 默认或保存到当前目录的dump.rdb

可以通过dir 指定目录

可以通过dbfilename指定文件名

 

注意RDB一旦服务器出现问题则会丢失最后一次快照后的数据,如果数据重要无法承受任何损失则考虑用AOF方式

AOF:追加日志方式  默认没有开启,一旦开启后没执行一条回更改redis的数据的命令,redis就会将该命令写入硬盘中的AOF文件默认文件名为appendonly.aof 默认目录RDB文件的目录相同

可以通过appendonly

appendonly yes

可以通过dir 指定目录

可以通过appendfilename指定文件名

appendfilename appendonly.aof

自动优化AOF文件,过滤之前被覆盖的冗余命令

auto-aof-rewrite-percentage 100        当目前的aof文件大小超过上一次重写时的aof文件袋下的百分之100会再次重写

auto-aof-rewrite-min-size 100            限制允许重写的最小aof文件大小

我们也可以使用bgrewriteaof命名手动执行重写

在启动reids时会自动逐个执行aof中的命令,载入速度比RDM慢点

每次执行更改数据库内容的操作时,AOF都会将命令记录在AOF文件,但是由于操作系统的缓存机制,数据并没有真正的写入磁盘,而是进入了系统的银盘缓存。在默认情况下系统没30秒会执行一次同步操作,一边讲缓存中的内容真正的写入硬盘,在这30秒的过程中如果系统异常退出会导致硬盘缓存中的数据丢失,这是aof不能容忍的,这就需要redis写入AOF文件后主动要求系统将缓存内容同步到硬盘中。

在redis中我们可以通过appendfsync参数配置设置同步的时机:

#appendfsync always                      每次执行写入都会执行同步

appendfsync everysec  默认            每秒执行一次操作(推荐)

#appendfsync no                             30秒执行一次同步 将硬盘缓存中的数据写入磁盘

这种只能保证硬盘不损坏,杜绝硬盘损坏后数据不丢失最好的办法就是    (主从)复制

posted @ 2018-08-26 10:39  虚无缥缈的云  阅读(119)  评论(0编辑  收藏  举报