Redis系列学习笔记18 Redis持久化
来源:互联网 发布:怎样开通淘宝食品 编辑:程序博客网 时间:2024/05/29 17:28
Redis持久化
- RDB持久化:将数据以二进制文件的形式存到硬盘里面。
- AOF持久化:增量存储至硬盘里面。
在Redis服务器创建RDB文件的情况中,以下三种是最常见的:
- 服务器执行客户端发送的SAVE命令;
- 服务器执行客户端发送的BASAVE命令;
- 使用save配置选项设置的自动保存条件被满足,服务器自动执行BGSAVE。
SAVE
在执行SAVE命令的过程中,Redis服务器将被阻塞,无法处理客户端发送的命令请求,只有在SAVE命令执行完毕之后,服务器才会重新开始处理客户端发送的命令请求。
BGSAVE
与SAVE不同的是不会造成Redis服务器阻塞,原因:
- Redis接收到BGSAVE命令时,不会创建RDB文件,而是通过fork()来生成一个子进程,然后由子进程负责创建RDB文件,而自己则继续处理客户端的命令请求;
- 当子进程创建好RDB文件并退出时,会向父进程发送一个信号,告知RDB文件创建完毕;
- 最后Redis服务器接收子进程创建的RDB文件,BGSAVE执行完毕。
自动保存
save 300 10
表示”如果距离上一次创建RDB文件过去了300秒,并且服务器的所有数据库总共已经发生了不少于10次修改,那么执行BGSAVE命令”。
save 900 1save 300 10save 60 10000
只要三个条件中的任意一个被满足时,服务器就会执行BGSAVE。
RDB持久化缺点:
RDB文件需要将服务器所有数据库的数据都保存起来,这是一个非常耗费资源和时间的操作,所以服务器需要隔一段时间才创建一个新的RDB文件,也即是说,创建RDB文件的操作不能执行得过于频繁,否则就会严重地影响服务器的性能。
为了解决RDB持久化在遭遇意外停机时丢失大量数据的问题,Redis提供了AOF持久化功能。AOF持久化的一个巨大优势是,用户可以根据自己的需要对AOF持久化进行调整,让Redis在遭遇意外停机时不丢失任何数据,或者只丢失一秒钟数据。
AOF提供了appendfsync选项,这个选项的值可以是always、everysec或者no
- always:服务器每写入一个命令,就调用一次fdatasync,将缓冲区里面的命令写入到硬盘里面。在这种模式下,服务器即使遭遇意外停机,也不会丢失任何已经执行得命令数据。
- everysec:服务器每秒钟调用一次fdatasync,将缓冲区里面的命令写入到硬盘里面。在这种模式下,服务器遭遇意外停机,最多只丢失一秒钟内执行得命令数据。
- no:服务器不主动调用fdatasync,由操作系统决定何时将缓冲区里面的命令写入到硬盘里面。在这种模式下,服务器遭遇意外停机时,丢失命令的数量是不确定的。
运行速度:always的速度慢,everysec和no都很快。默认值:everysec。
AOF重写
创建一个没有冗余内容的新AOF文件
AOF 重写示例
原有的 AOF 文件
SELECT 0SADD fruits "apple"SADD fruits "banana"SADD fruits "cherry"SADD fruits "apple"INCR counterINCR counterDEL counterSET msg "hello world"SET msg "goodbye"SET msg "hello world again!"RPUSH lst 1 3 5RPUSH lst 7 9LPOP lstRPOP lst
重写产生的新 AOF 文件
SELECT 0SADD fruits "apple" "banana" "cherry"SET msg "hello world"RPUSH lst 3 5 7
触发AOF重写的两种方法
- 客户端向服务器发送BGREWRITEAOF命令。
通过设置配置选项来让服务器自动执行BGREWRITEAOF命令,它们分别是:
- auto-aof-rewrite-min-size size,触发AOF重写所需的最小体积:只有在AOF文件的体积大于等于size时,服务器才会考虑是否需要进行AOF重写。这个选项避免对体积过小的AOF文件进行重写。
- auto-aof-rewrite-percentage percent, 指定触发重写所需的AOF文件体积百分比:当AOF文件的体积大于auto-aof-rewrite-min-size指定的体积,并且超过上一次重写之后的AOF文件体积的percent%时,就会触发AOF重写。
0 0
- Redis系列学习笔记18 Redis持久化
- Redis学习笔记9--Redis持久化
- Redis学习笔记9--Redis持久化
- Redis学习笔记(二) Redis持久化
- Redis学习笔记9--Redis持久化
- Redis学习笔记9--Redis持久化
- Redis学习笔记--Redis持久化
- 【Redis学习】:redis持久化
- 七 redis学习笔记之持久化
- redis学习笔记七之持久化
- redis学习笔记七之持久化
- 七redis学习笔记之持久化
- redis学习笔记之持久化
- Redis学习笔记十、持久化
- Redis 学习笔记5-持久化
- 【学习笔记】Redis(6)-持久化
- Redis学习笔记2 持久化
- redis学习笔记五(持久化)
- 关于Chrome调试中.min.js.map 404的问题
- NStimer
- visio 2013 破解工具 - KMSpico
- hdu1503(最长公共子序列记录)
- 对话框
- Redis系列学习笔记18 Redis持久化
- vs2010环境下wincap的配置
- MyBatis Review——多对多映射
- 柴俊理金:5月23号现货黄金,宁贵沥青操作策略
- 安装dubbo注册中心Zookeeper
- 在Linux上安装docker
- makefile入门(一)
- Redis系列学习笔记19 Redis多机功能
- Linux命令 - Awk