千家信息网

RDB数据持久化(理论)

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,持久化原理:RDB是snapshot快照<二进制文件>存储,是默认的持久化方式。RDB会按照一定的策略,周期性的将数据保存到磁盘。(下个周期为到来时故障,会丢数据)借助fork命令的copy on w
千家信息网最后更新 2025年02月02日RDB数据持久化(理论)

持久化原理:

RDB是snapshot快照<二进制文件>存储,是默认的持久化方式。

RDB会按照一定的策略,周期性的将数据保存到磁盘。(下个周期为到来时故障,会丢数据)

借助fork命令的copy on write机制,在快照生成时,将当前进程fork出一个子进程,

然后再子进程中循环所有数据,将数据写成RDB文件。

优点:使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能。

缺点:RDB是按照周期性策略进行持久化,

如果持久化之间redis发生故障,会发生数据丢失,

所以这种方式适合数据要求不严谨的环境。

配置文件相关参数:

dbfilename dump.rdb #指定持久化数据文件名

dir /usr/local/redis-3.0.6-6379/ #默认dir ./

save 900 1

save 300 10

save 60 10000

持久化过程:

当满足save的条件时,比如更改了1个key,900s后会将数据写入临时文件,

持久化完成后将临时文件替换旧的dump.rdb。

使用RDB恢复数据:(需要时间)

重启redis的server即可完成(启动redis的server时会从dump.rdb中先同步数据)

使用命令进行持久化save存储:

./redis-cli -h ip -p port save #前台进行存储

./redis-cli -h ip -p port bgsave #后台进行存储


0