黑马程序员技术交流社区
标题:
【成都校区】redis持久化方式
[打印本页]
作者:
没你好果汁吃
时间:
2018-11-29 18:54
标题:
【成都校区】redis持久化方式
Redis持久化方式有两种:RDB和AOF
RDB:rdb类似快照的模式,默认情况下,redis将数据库快照保存在dump.rdb文件中,文件保存出发的条件在配置文件中可以进行配置,如:save 600 1000,表示redis要满足60秒内至少有1000个键改动,会自动保存一次,多个配配置之间互不干扰,rdb模式是默认开启的,同时可以手动执行:SAVE,BGSAVE命令,手动执行。SAVE命令会阻塞队列,此时客户端无法响应请求。BGSAVE不会阻塞,客户端仍能接受请求,redis此时会folk()一个新的进程来创建rdb文件,子进程处理完成后会发送通知告诉父进程处理完毕,父进程用新的dump.rdb替换旧文件,save时是不需要创建子进程的.下面是默认配置
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
优点:
完全备份,不同时间的数据集备份可以做到多版本恢复
紧凑的单一文件,方便网络传输,适合灾难恢复
恢复大数据集速度较AOF快
缺点:
会丢失最近写入、修改的而未能持久化的数据
folk过程非常耗时,会造成毫秒级不能响应客户端请求
AOF:
Append only file,采用追加的方式保存,默认文件是appendonly.aof,实现原理就是记录所有操作命令,启动时使用这些命令就可以还原数据库。
写入策略:
Always:服务器每写入一个命令,就调用一次fdatasync,将缓冲区里面的命令写入到硬盘。 这种模式
下,服务器出现故障,也不会丢失任何已经成功执行的命令数据
Everysec(默认):服务器每一秒重调用一次fdatasync,将缓冲区里面的命令写入到硬盘。 这种模式下,
服务器出现故障,最多只丢失一秒钟内的执行的命令数据
No:服务器不主动调用fdatasync,由操作系统决定何时将缓冲区里面的命令写入到硬盘。 这种模式下,
服务器遭遇意外停机时,丢失命令的数量是不确定的
运行速度:always的速度慢,everysec和no都很快
配置都可在配置文件中进行修改
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2