黑马程序员技术交流社区

标题: 【成都校区】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