redis持久化之RDB

redis是一个非常好的缓存中间件,就是将我们的数据放到缓存中。我们知道缓存的读取是非常快的。但是谁都避免不了服务器的意外宕机。一旦宕机,缓存中的数据就会丢失。redis除了有主备方式来解决宕机之后的数据丢失之外,还有持久化机制。把数据写在硬盘上,机器宕机之后启动时会先去硬盘上读取数据写进内存。
redis的持久化机制分为两种,即RDB和AOF,本篇主要讲RDB,下篇讲AOF
RDB执行流程
Redis会fork一个子进程,然后子进程将数据写入一个临时的RDB文件,当子进程完成对临时的RDB文件的写入,将完成的RDB文件来覆盖 旧的RDB文件。只有新的RDB文件生成后才会将旧的文件替换成新的,也就是说任何时候RDB文件都是完整的
RDB触发时机

1.配置文件

  • save 900 1 -> 900秒内至少有一次修改则触发保存操作
  • save 300 10 -> 300秒内至少有10次修改则触发保存操作
  • save 60 10000 -> 60秒内至少有1万次修改则触发保存操作

2.使用命令

  • save -> 同步:前台保存,会阻塞当前线程,save完之后在执行其他请求
  • bgsave -> 异步:开另一个线程后台保存

3.使用flushall命令:这个命令也会产生dump.rdb文件,但里面是空的,没有意义

4.服务器关闭: 如果执行SHUTDOWN命令让Redis正常退出,那么此前Redis就会执行一次持久化保存。但是意外宕机不会持久化 比如断电
5.主从复制的时候(具体请看主从复制文章)
因为要复制给从节点最新信息,
所以也会触发
缺点:由于他是每隔几秒钟触发一次,当这次触发完,下次还没有触发时,也可以存入内存数据,但是存入数据之后,突然宕机,那么存的数据就不能被持久化了。就会出现最后一次持久化之后的数据丢失问题。

你可能感兴趣的:(redis,redis,缓存)