Redis的持久化之RDB

2022-05-13 11:14:52 浏览数 (1)

RDB(快照)持久化:周期性保存某个时间点的全量数据快照

创建快照的方式:

  • SAVE:阻塞Redis的服务器进程,直到RDB文件被创建完毕 通常不会使用这种,因为它用的是主线程,而主线程是处理所有请求的线程,使用SAVE就很耽误事
  • 一般使用BGSAVE:Fork出一个子进程来创建RDB文件,不阻塞服务器进程 一般都使用这个
手动触发RDB持久化的方式
自动触发RDB持久化的方式
  • 方法1:根据redis.conf配置里的SAVEmn定时触发(用的是BGSAVE)
  • 方法2:主从复制时,主节点自动触发
  • 方法3:执行Debug Reload
  • 方法4:执行Shutdown且没有开启AOF持久化
BGSAVE原理

Redis会fork一个子进程,父子进程共享数据段,子进程以copy on write的方式去快照.

RDB缺点
  • 每次快照持久化都会将内存数据完整的写到磁盘中,并不是只同步更新数据,如果数据量大时会由于IO而严重影响性能
  • 可能会因为Redis挂掉而丢失从当前至最近一次快照期间的数据

0 人点赞