Redis 持久化之RDB操作

Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消逝,所以Redis提供了持久化功能!

在主从复制中,rdb就是备用的,存在从机上边,不占用主机资源。

RDB:

  • 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读取到内存里。
  • Redis会单独创建fork一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化都结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程是不进行任何IO操作的。这就确保了级高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式就要比AOF方式更加的高效。
  • RDB的缺点:是最后一次持久化的数据可能丢失。
  • 我们在生产环境会将dump.rdb这个文件进行备份。

redis默认的就是RDB持久化,一般情况下不需要修改这个配置。

rdb保存的文件就是dump.rdb文件

 

 

 在 redis.windows.conf (windows版本)配置文件中也可以查看配置:

 

 

 我们可以自己修改配置

 

 

 触发机制:

①save的规则满足的情况下,会自动触发rdb规则

②执行flushall命令,也会触发rdb规则

③退出redis时,也会产生rdb文件!

备份就自动生成一个dump.rdb文件。

如何恢复rdb文件:

① 只需要将rdb文件放在我们的redis启动目录就可以,redis启动的时候会自动检查dump.rdb恢复其中的数据!

② 查看需要存在的位置:

127.0.0.1:6379> config get dir
1) "dir"
2) "D:\\Program Files\\Redis"
127.0.0.1:6379>  

 

 

 rdb几乎它自己默认的配置就够用了。

优点和缺点:

① 优点:

  • 适合大规模的数据恢复!
  • 对数据的完整性要求不高!

②缺点:

  • 需要一定的时间间隔进程操作!如果redis意外宕机了,这个最后一次修改数据就没有了!
  • fork进程的时候,会占用一定的内存空间!!
posted @ 2021-02-13 10:07  创客未来  阅读(621)  评论(0编辑  收藏  举报