美文网首页
Redis~持久化策略RDB

Redis~持久化策略RDB

作者: 开心的蛋黄派 | 来源:发表于2024-01-14 15:25 被阅读0次

    一 RDB持久化流程

    Redis执行RDB持久化时,会创建当前数据的快照,并将这个快照写入到磁盘上的RDB文件中。这个过程是通过bgsave命令触发的,它会fork出一个子进程来执行实际的持久化操作,而主进程则继续处理客户端的请求。这种设计避免了持久化操作对Redis性能的影响。

    二 Copy-On-Write(COW)机制

    在持久化过程中,Redis利用了Linux的Copy-On-Write(COW)机制。当执行bgsave命令时,Redis会fork出一个子进程来处理持久化操作。在fork过程中,Linux内核会将父进程的内存页标记为只读,并将这些内存页的引用计数加一。子进程会共享这些内存页,而不是立即复制一份。只有当父进程或子进程需要修改某个内存页时,Linux内核才会复制该内存页,并允许修改。这种机制避免了大量数据的复制,提高了持久化的效率。

    三 RDB的局限性

    数据丢失风险:由于RDB是间隔性持久化,如果在持久化间隔期间Redis发生故障,那么最后一次持久化之后的数据将会丢失。

    四 相关配置参数

    save配置:这是RDB持久化的核心配置,它指定了在多长时间内,如果有多少个key发生变化,则触发一次快照。例如,save 900 1 表示在900秒内至少有1个key的值变化,则保存一次快照。同样地,你可以设置多个这样的规则,只要满足其中一个,就会触发RDB持久化。

    stop-writes-on-bgsave-error配置:这是一个开关,决定了当后台保存数据失败时,Redis是否停止接收数据。如果设置为yes,当RDB持久化失败时,Redis会停止接收新的写入操作,这可以提醒用户数据可能没有被正确持久化。

    rdbcompression配置:这个配置决定了是否对RDB文件进行压缩。如果设置为yes,Redis会使用LZF压缩算法对RDB文件进行压缩,以节省磁盘空间。

    dbfilename配置:这个配置指定了RDB文件的名称。默认的文件名是dump.rdb。

    dir配置:这个配置指定了RDB文件和AOF文件存放的目录。注意,这里配置的目录需要是Redis进程有写权限的。

    五 在线关闭

    命令

    CONFIG SET save " "

    CONFIG  GET save 

    配置文件

    save ""

    六 恢复策略

    当Redis服务器启动时,它会自动加载RDB文件来恢复数据。如果同时存在RDB和AOF持久化文件,Redis会优先使用AOF文件来恢复数据,因为AOF文件通常包含了更完整的操作记录。

    相关文章

      网友评论

          本文标题:Redis~持久化策略RDB

          本文链接:https://www.haomeiwen.com/subject/xhmxodtx.html