rdb快照持久化
一、持久化的方式
什么是持久化: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
相关文章
- 如何应对缓存穿透和缓存雪崩问题
分析:这两个问题,说句实在话,一般中小型传统软件企业,很难碰到这个问题。如果有大并发的项目,流量有几百万左右。这两个问题一定要深刻考虑。 缓存穿透,即黑客故意去请求缓存中不存在的数据,导致所有的请
- 反向代理缓存
一、传统代理 很久以前,我们通常需要通过代理服务器来访问互联网上的Web站点,代理服务器本身接入了互联网,而我们通过内部网络与代理服务器相连。即便是现在,有些时候为了访问一些由于某种原因无法直接访问
- aof恢复与rdb服务器迁移
一、不小心flushall或flushdb了怎么办??? 只有aof还不够。 因为如果发生重写,aof文件里就什么都没有了。 所以要及时shutdown nosave,防止aof重写!!! 然后将a
- redis 主从复制
一、集群的作用 1.主从备份 防止主机宕机 2.读写分离 分担master的任务 3.任务分离,如从服务器分别担任备份工作与计算工作 二、redis集群配置 Master配置 1、关闭rdb快照
- rdb快照持久化
一、持久化的方式 什么是持久化:redis所有数据保存在内存中,对数据的更新将异步保存到磁盘上。 持久化:即把数据存储于断电后不会丢失的设备中,通常是硬盘。 常见的持久化方式:主从:通过从服务器保存
随机推荐
- 如何应对缓存穿透和缓存雪崩问题
分析:这两个问题,说句实在话,一般中小型传统软件企业,很难碰到这个问题。如果有大并发的项目,流量有几百万左右。这两个问题一定要深刻考虑。 缓存穿透,即黑客故意去请求缓存中不存在的数据,导致所有的请
- 反向代理缓存
一、传统代理 很久以前,我们通常需要通过代理服务器来访问互联网上的Web站点,代理服务器本身接入了互联网,而我们通过内部网络与代理服务器相连。即便是现在,有些时候为了访问一些由于某种原因无法直接访问
- aof恢复与rdb服务器迁移
一、不小心flushall或flushdb了怎么办??? 只有aof还不够。 因为如果发生重写,aof文件里就什么都没有了。 所以要及时shutdown nosave,防止aof重写!!! 然后将a
- redis 主从复制
一、集群的作用 1.主从备份 防止主机宕机 2.读写分离 分担master的任务 3.任务分离,如从服务器分别担任备份工作与计算工作 二、redis集群配置 Master配置 1、关闭rdb快照
- rdb快照持久化
一、持久化的方式 什么是持久化:redis所有数据保存在内存中,对数据的更新将异步保存到磁盘上。 持久化:即把数据存储于断电后不会丢失的设备中,通常是硬盘。 常见的持久化方式:主从:通过从服务器保存