【Redis】的持久化详解
2018-02-03 17:09
253 查看
Redis的强大功能很大程度上是由于其将所有的数据都存储在内存中,为了使Redis在重启后仍能保证数据不丢失,需要将数据从内存中以某种形式持久化到硬盘中。Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或两种结合使用。
1.持久化
就是将数据保存到磁盘,机器宕机或者重启数据不丢失。如果将数据存储到内存中,机器宕机或者重启数据会丢失。
2.RDB
RDB方式是通过快照完成的,当符合一定条件时,Redis会自动将内存中的所有数据进行快照并且存储到硬盘上。进行快照的条件在配置文件中指定,有2个参数构成:时间和改动的键的个数,当在指定时间内被改动的键的个数大于指定数值时就会进行快照。 RDB是Redis的默认持久化方式。
2.1 配置
2.2 RDB文件
默认的RDB的文件路径是在当前目录,文件名是:dump.rdb,可以在配置文件中修改路径和文件名,分别是dir和dbfilename
2.3 RDB数据恢复过程
Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存,一般情况下1GB的快照文件载入到内存的时间约为20-30分钟(不同服务器会有差异)。
2.4 快照过程
2.5 手动快照
如果没有触发自动快照,需要对redis执行手动快照操作,SAVE和BGSAVE都是执行手动快照,但是两者有区别:SAVE是由主进程进行快照,会堵塞其它请求,BGSAVE是通过fork子进程快照操作。
2.6 快照需要注意
由于Redis使用fork来复制一份当前进程,那么子进程就会占有和主进程一样的内存资源,比如说主进程8G内存,那么在备份的时候必须保证有16G的内存,要不然会启用虚拟机内存,性能非常差。
2.7 RDB文件的压缩
RDB文件是通过压缩的,可以通过配置rdbcompression参数来禁用压缩。
压缩和不压缩的优缺点:
压缩:
优点:减少磁盘存储空间
缺点:消耗CPU资源
不压缩:
优点:不消耗CPU资源
缺点:占用磁盘空间多
如何选择? 看需求、看服务器资源情况。
Redis默认是开启压缩的,配置为
3.AOF
Redis的AOF持久化策略是将发送到Redis服务端的每一条命令都记录下来,并且保存到硬盘中的AOF文件,AOF文件的位置和RDB文件的位置相同,都是通过dir参数设置,默认的文件名appendonly.aof,可以通过appendfilename参数修改。
3.1 测试AOF
当客户端向服务器发送Redis命令时,Redis会将所执行的命令记录到aof文件中,如下
当redis服务器重启后,会将执行该aof文件,达到数据恢复的目的。
3.2 优化AOF文件
可以使用BGREWRITEAOF命令来重写AOF文件,目的是去除数据的中间执行过程,保留最终数据命令即可。
3.3 重写策略
3.4 文件同步策略
注意:即使每秒做文件同步也可能导致数据丢失。
1.持久化
就是将数据保存到磁盘,机器宕机或者重启数据不丢失。如果将数据存储到内存中,机器宕机或者重启数据会丢失。
2.RDB
RDB方式是通过快照完成的,当符合一定条件时,Redis会自动将内存中的所有数据进行快照并且存储到硬盘上。进行快照的条件在配置文件中指定,有2个参数构成:时间和改动的键的个数,当在指定时间内被改动的键的个数大于指定数值时就会进行快照。 RDB是Redis的默认持久化方式。
2.1 配置
2.2 RDB文件
默认的RDB的文件路径是在当前目录,文件名是:dump.rdb,可以在配置文件中修改路径和文件名,分别是dir和dbfilename
2.3 RDB数据恢复过程
Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存,一般情况下1GB的快照文件载入到内存的时间约为20-30分钟(不同服务器会有差异)。
2.4 快照过程
2.5 手动快照
如果没有触发自动快照,需要对redis执行手动快照操作,SAVE和BGSAVE都是执行手动快照,但是两者有区别:SAVE是由主进程进行快照,会堵塞其它请求,BGSAVE是通过fork子进程快照操作。
2.6 快照需要注意
由于Redis使用fork来复制一份当前进程,那么子进程就会占有和主进程一样的内存资源,比如说主进程8G内存,那么在备份的时候必须保证有16G的内存,要不然会启用虚拟机内存,性能非常差。
2.7 RDB文件的压缩
RDB文件是通过压缩的,可以通过配置rdbcompression参数来禁用压缩。
压缩和不压缩的优缺点:
压缩:
优点:减少磁盘存储空间
缺点:消耗CPU资源
不压缩:
优点:不消耗CPU资源
缺点:占用磁盘空间多
如何选择? 看需求、看服务器资源情况。
Redis默认是开启压缩的,配置为
3.AOF
Redis的AOF持久化策略是将发送到Redis服务端的每一条命令都记录下来,并且保存到硬盘中的AOF文件,AOF文件的位置和RDB文件的位置相同,都是通过dir参数设置,默认的文件名appendonly.aof,可以通过appendfilename参数修改。
3.1 测试AOF
当客户端向服务器发送Redis命令时,Redis会将所执行的命令记录到aof文件中,如下
当redis服务器重启后,会将执行该aof文件,达到数据恢复的目的。
3.2 优化AOF文件
可以使用BGREWRITEAOF命令来重写AOF文件,目的是去除数据的中间执行过程,保留最终数据命令即可。
3.3 重写策略
3.4 文件同步策略
注意:即使每秒做文件同步也可能导致数据丢失。
相关文章推荐
- Redis高可用详解:持久化技术及方案选择 - Redis
- redis持久化详解
- NoSQL之Redis高级命令详解--持久化机制
- redis持久化方式配置详解
- Redis持久化方式RDB与AOF详解
- Redis安装、配置、操作、持久化、主从、phpredis扩展安装使用详解之操作使用
- Redis详解之-事件订阅和持久化存储方式(RDB和AOF)(二)
- redis持久化原理详解
- Redis全方位详解--磁盘持久化和容灾备份
- redis持久化详解
- Redis持久化原理及配置详解(RDB方式和AOF方式)
- redis 安装配置及持久化详解
- Redis持久化详解
- Redis高可用详解:持久化技术及方案选择
- redis持久化原理详解
- Redis持久化方案详解
- redis持久化原理详解
- Redis安装、配置、操作、持久化、主从、phpredis扩展安装使用详解之持久化与主从
- NoSQL之Redis高级命令详解--持久化机制
- Redis中持久化的两种方法详解