rdb
和aof
一、RDB是什么?面试
Snapshot
快照,它恢复时是将快照文件直接读到内存里dump.rdb
文件中,5分钟后,第二次存储20到条dump.rdb
文件中,就把第一次的覆盖了。二、Forkredis
Fork
的做用:复制一个与当前进程同样的进程。新进程的全部数据(变量、环境变量、程序计数器等) 数值都和原进程一致,可是是一个全新的进程,并做为原进程的子进程。算法
三、RDB 保存的是 dump.rdb
文件。数据库
四、配置位置:redis.conf
的 SNAPSHOTTING
bash
五、配置详解:服务器
在磁盘上保存数据的命令:save <seconds> <changes>
并发
如下状况3选1,将会触发数据库保存:app
手动当即保存:异步
set key value
-> save
不保存:高并发
注意:
ShutDown
,至关于MySQL的commit
,会当即生成dump.rdb
文件。此时,若是以前执行FLUSHALL
,把数据库清空,此时既清空又提交,生成的dump.rdb
是空的文件。因此,恢复的文件也是空的。恢复:
dump.rdb
便可。stop-writes-on-bgsave-error
:后台save出错,那么就中止写入,出错就刹车。
rdbcompression
:是否启用压缩算法,默认开启。
rdbchecksum
:用于数据校验。
六、如何触发RDB快照(3种方式)
save
或者bgsave
。Save
:save时只管保存,其它无论,所有阻塞。BGSAVE
:Redis会在后台异步进行快照操做,快照同时还能够响应客户端请求。能够经过:lastsave
,获取最后一次成功执行快照的时间flushall
命令,也会产生dump.rdb
文件,但里面是空的,无心义七、RDB
优点和劣势:
八、如何中止:
redis-cli config set save ""
一、AOF是什么?
二、AOF 保存的是 appendonly.aof
文件
三、配置的位置:redis.conf
的 APPEND ONLY MODE
四、配置详解:
appendfsync
:同步写的策略,有三种
always
:同步持久化,每次发生数据变动会被当即记录到磁盘,性能较差,但数据完整性比较好everysec
:出厂默认推荐,异步操做,每秒记录,若是一秒内宕机,有数据丢失no
:从不一样步默认AOF
文件名:appendonly.aof
一、启动 AOF
AOF
持久化存储方式默认关闭,设置yes就是启动持久化
二、修复 AOF
若是我在上面文件的后面,模拟文件损坏的场景,可否成功启动redis?同时存在rdb 和aof ,二者可否共存,能的话优先加载谁?
模拟:
启动:
第一问:启动失败;
第二问:能够共存;
第三问:优先加载 aof 文件,由于 rdb 文件是正常的,aof 文件是损坏的,加载失败的缘由是 aof 文件损坏,因此得出:优先加载 aof 文件
三、如何修复 aof 文件?
输入命令:redis-check-aof --fix appendonly.aof
一、是什么?
bgrewriteaof
。二、重写原理:
三、触发条件:
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
复制代码
AOF
优点和劣势:RDB
or AOF
一、什么是持久化?
rdb
和aof
二、若是dump.rdb
和appendonly.aof
能够共存,同时存在的状况下,会先加载谁?
appendonly.aof