rdb快照持久化

模板网 2021-04-14

一、持久化的方式

什么是持久化:redis所有数据保存在内存中,对数据的更新将异步保存到磁盘上。

持久化:即把数据存储于断电后不会丢失的设备中,通常是硬盘。

常见的持久化方式:
主从:通过从服务器保存和持久化,如mongoDB的replication sets配置
日志:操作生成相关日志,并通过日志来恢复数据

couchDB对于数据内容的修改,只追加,则文件本身就是日志,不会丢失数据。

二、redis-之rdb快照持久化

1、手动save(同步)

手动向redis客户端发送save命令。redis会同步dump rdb文件,此过程会阻塞其他命令。
>redis save
ok

缺点:由于是同步的命令,所以当数据量比较大的时候会造成阻塞。
文件策略:如果存在老的rdb文件,新的替换老的。
复杂度:o(n)

2、手动bgsave(异步)

手动向redis客户端发送bgsave命令。redis会异步dump rdb文件,此过程不会阻塞其他命令。
>redis bgsave
Backgroud saving started

redis主进程会fork()一个子进程用来执行dump操作,主进程依然可以处理其他客户端的请求。
当rdb文件生成成功之后,子进程会告诉主进程。

缺点:fork会消耗额外的内存。
文件策略:如果存在老的rdb文件,新的替换老的。
复杂度:o(n)

3、rdb自动的工作原理

1)每隔N分钟或N次写入之后
(2)从内存dump数据形成rdb文件
(3)压缩
(4)放在备份目录
注:N分钟或N次/压缩/目录 部分可以通过参数来配置

三、rdb快照相关参数

配置 seconds changes

save 900 1 #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少一个关键字发生变化

save 300 10 #必须是300秒之后至少10个关键字发生变化

save 60 10000 #必须是60秒之后至少有10000个关键字发生变化

stop-writes-on-bgsave-error yes #后台存储错误,客户端停止写

rdbcompression yes #使用LZF压缩rdb文件

rdbchecksum yes #存储和加载rdb文件时校验

dbfilename dump.rdb #设置rdb文件名(dump-${port}.rdb)

dir ./ #设置工作目录,rdb文件会写入该目录(bigdiskpath)

四、测试redis性能

在redis的bin目录下面有一个redis-benchmark命令,专门用来测试redis的性能

五、rdb的优势

dump的内存的快照,恢复速度特别快

六、rdb的缺陷

在两个保存点之间,断电

将会丢失1-N分钟的数据

处于对持久化的更精细要求,redis增添了aof方式append only file

七、容易忽略生成rdb文件的几个命令

在我们没有执行save、bgsave也没有配置自动dump的策略,那么为什么依然会生成rdb文件呢? 这时候可以考虑一下几点:

1、全量复制(比如在主从模式下的复制)
2、debug reload
3、shutdown

相关文章

  1. redis 运维常用命令

    time #查看时间戳与微妙数 dbsize #查看当前数据库中key数量 bgrewriteaof #后台进程重写aof bgsave #后台保存rdb快照 save #保存rd

  2. Sublime Text 快捷键汇总

    [TOC] 快捷键 作用 command+q 退出sublime command+w 退出当前正在编辑的文件 command+e 使用所选内容查找 command+r 跳转定

  3. javascript中的正则表达式

    javascript正则表达式的定义 JavaScript中的正则表达式定义在一个RegExp对象中,通过实例化一个RegExp构造函数来创建一个正则表达式对象var pattern=new R

  4. redis的安装配置

    先介绍mac的安装方法 一、安装(首先你要先安装brew工具) brew install redis 然后在终端的末尾你会发现如下: if you don't want/need a backgr

  5. php配置加载器

    配置加载器 当我们使用App::cfg系列方法获取配置时,wulaphp是通过配置加载器先加载配置然后再返回配置项对应值的(当然可以返回整个配置数组)。配置加载器ConfigurationLoade

随机推荐

  1. redis 运维常用命令

    time #查看时间戳与微妙数 dbsize #查看当前数据库中key数量 bgrewriteaof #后台进程重写aof bgsave #后台保存rdb快照 save #保存rd

  2. Sublime Text 快捷键汇总

    [TOC] 快捷键 作用 command+q 退出sublime command+w 退出当前正在编辑的文件 command+e 使用所选内容查找 command+r 跳转定

  3. javascript中的正则表达式

    javascript正则表达式的定义 JavaScript中的正则表达式定义在一个RegExp对象中,通过实例化一个RegExp构造函数来创建一个正则表达式对象var pattern=new R

  4. redis的安装配置

    先介绍mac的安装方法 一、安装(首先你要先安装brew工具) brew install redis 然后在终端的末尾你会发现如下: if you don't want/need a backgr

  5. php配置加载器

    配置加载器 当我们使用App::cfg系列方法获取配置时,wulaphp是通过配置加载器先加载配置然后再返回配置项对应值的(当然可以返回整个配置数组)。配置加载器ConfigurationLoade