RDB
RDB:Redis DataBases
RDB:在指定时间内将内存中的数据集快照写到磁盘中 , 恢复时把磁盘中文件读取到内存里 . Redis会单独创建(fork)一个子进程来进行持久化 , 会先将数据写道一个临时文件中 , 待持久化过程结束了 , 再用这个临时文件替换上次持久化好的文件 . 整个过程不进行任何IO操作 , 这就确保了极高的性能 . 如果需要进行大规模数据的恢复 , 且对数据恢复的完整性不是非常敏感 , 那RDB方式要比AOF方式更加高效 . RDB的缺点最后一次持久化后的数据可能丢失.
dunp.rdb保存位置和启动redis-cli当前文件有关 且启动时会在当前文件夹下查找dump.rdb.需要修改当前文件夹权限使其有创建文件的权限 sudo chmod 777 /esr/local/bin/
save 操作强制备份 只管保存,其它不管, 全部阻塞
bgsave reids会在后台异步进行快照操作同时还可以响应客户端请求
AOF:Append Only File
以日志形式来记录每个写操作 , 只许追加文件不许改写文件 , Redis启动之初会读取该文件重新构建按数据 , 换言之 , Redis根据日志内容将写指令从前到后执行一次来玩成数据的恢复工作.
appendonly no //yes打开aof持久化 aof和rdb是可以共存的 优先加载aof 如果aof存在语法错误 需要使用redis-check-aof --fix appendonly.aof来修复
appendfsync everysec //可选always和everysec和no
rewrite 由于追加机制 , 文件会越来越大 之后新增机制 当大于设定的阈值 , Redis就会启动AOF文件的内容压缩 , 只保留可以恢复的最小指令集 , 可以使用命令bgrewriteaof
优势:每秒同步 每修改同步
劣势:相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb