什么是RDB?
在指定的时间间隔执行数据集的时间点快照,把某一时刻的数据和状态以文件的形式写到磁盘上这个文件就称为rdb文件(dump.rdb)
RDB自动触发
进入配置文件进行以下修改
1,更改rdb自动触发条件 434行设置间隔10秒钟且有一条更改记录则自动触发
426 # Unless specified otherwise, by default Redis will save the DB:
427 # * After 3600 seconds (an hour) if at least 1 change was performed
428 # * After 300 seconds (5 minutes) if at least 100 changes were performed
429 # * After 60 seconds if at least 10000 changes were performed
430 #
431 # You can set these explicitly by uncommenting the following line.
432 #
433 # save 3600 1 300 100 60 10000
434 save 10 1
2,设置rdb文件名称
480 # The filename where to dump the DB
481 dbfilename dump6379.rdb
3,设置rdb文件存放目录
503 # Note that you must specify a directory here, not a file name.
504 dir /myredis/dumpfiles
我们在进行如下命令操作时也会生成rdb文件:shutdown,flushdb,flushall 但是这个文件是空的没有什么意义。因此我们要在不同的设备上备份rdb文件
RDB手动触发
1,save 命令 这个种方式会造成阻塞使redis无法完成正常的缓存功能在生产环境中禁用
2,bgsave命令 会在系统中开辟子线程用于生成rdb文件不影响redis的功能 这也是系统默认的命令
RDB文件修复
redis-check-rdb rdb文件绝对路径
如何禁用RDB
1,将第424行的注释取消掉将会永久禁用掉rdb
421 # Snapshotting can be completely disabled with a single empty string argument
422 # as in following example:
423 #
424 # save ""
2,redis-cli config set save "" 这个命令只会暂时禁用掉rdb
什么是AOF?
AOF(append-only file):以日志的形式来记录每一个写操作 只允许追加文件不可以改写文件
在redis启动之初会将文件中的命令从上到下执行一遍完成数据恢复的工作
AOF是对RDB的一种补充有效防止了我们在写入时突然的服务器宕机造成的数据缺失问题
AOF怎么开启
在配置文件中将 1379 appendonly no 的no改为yes
AOF的写回策略
我们所执行的增删改操作命令并不会直接存到AOF文件中而是更具写回策略而定
Always 同步写回没执行一个增删改操作便将命令写到文件中
everysec 先将命令写到AOF缓存区间隔一秒后将命令写道文件中
no 由操作系统控制的写回,所有命令全部存到AOF缓存区由操作系统决定何时写回到文件中
AOF文件的保存
aof文件有三个文件组成
appendonly.aof.1.base.rdb
appendonly.aof.1.incr.aof(这个文件是用来记录操作命令的)
appendonly.aof.manifest
aof文件异常受损恢复命令
redis-check-aof --fix appendonly.aof.1.incr.aof
AOF重写机制
Specify a percentage of zero in order to disable the automatic AOF
# rewrite feature.
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof的默认重写机制是当 当前文件大小是之前的一倍并且达到了64MB则会自动触发重写机制
此时appendonly.aof.1.incr.aof文件中的指令以最小指令集的形式放到appendonly.aof.2.base.rdb文件中并且生成一个新的appendonly.aof.2.incr.aof文件
手动重写命令:bgrewriteaof
AOF+RDB
redis支持aof和rdb同时使用并且在数据恢复时优先开始读取aof文件