首页 » NoSQL » 【Redis】的持久化详解

【Redis】的持久化详解

原文 http://blog.csdn.net/qq_35029429/article/details/79247799

2018-02-04 02:01:10阅读(546)

Redis的强大功能很大程度上是由于其将所有的数据都存储在内存中,为了使Redis在重启后仍能保证数据不丢失,需要将数据从内存中以某种形式持久化到硬盘中。Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或两种结合使用。

1.持久化
就是将数据保存到磁盘,机器宕机或者重启数据不丢失。如果将数据存储到内存中,机器宕机或者重启数据会丢失。

2.RDB
RDB方式是通过快照完成的,当符合一定条件时,Redis会自动将内存中的所有数据进行快照并且存储到硬盘上。进行快照的条件在配置文件中指定,有2个参数构成:时间和改动的键的个数,当在指定时间内被改动的键的个数大于指定数值时就会进行快照。 RDB是Redis的默认持久化方式。

2.1 配置
【Redis】的持久化详解【Redis】的持久化详解

2.2 RDB文件
默认的RDB的文件路径是在当前目录,文件名是:dump.rdb,可以在配置文件中修改路径和文件名,分别是dir和dbfilename
【Redis】的持久化详解

2.3 RDB数据恢复过程
Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存,一般情况下1GB的快照文件载入到内存的时间约为20-30分钟(不同服务器会有差异)。

2.4 快照过程
【Redis】的持久化详解

2.5 手动快照
如果没有触发自动快照,需要对redis执行手动快照操作,SAVE和BGSAVE都是执行手动快照,但是两者有区别:SAVE是由主进程进行快照,会堵塞其它请求,BGSAVE是通过fork子进程快照操作。

2.6 快照需要注意
由于Redis使用fork来复制一份当前进程,那么子进程就会占有和主进程一样的内存资源,比如说主进程8G内存,那么在备份的时候必须保证有16G的内存,要不然会启用虚拟机内存,性能非常差。

2.7 RDB文件的压缩
RDB文件是通过压缩的,可以通过配置rdbcompression参数来禁用压缩。

压缩和不压缩的优缺点:
压缩:
优点:减少磁盘存储空间
缺点:消耗CPU资源
不压缩:
优点:不消耗CPU资源
缺点:占用磁盘空间多
如何选择? 看需求、看服务器资源情况。

Redis默认是开启压缩的,配置为
【Redis】的持久化详解

3.AOF
Redis的AOF持久化策略是将发送到Redis服务端的每一条命令都记录下来,并且保存到硬盘中的AOF文件,AOF文件的位置和RDB文件的位置相同,都是通过dir参数设置,默认的文件名appendonly.aof,可以通过appendfilename参数修改。

【Redis】的持久化详解

3.1 测试AOF
当客户端向服务器发送Redis命令时,Redis会将所执行的命令记录到aof文件中,如下
【Redis】的持久化详解
当redis服务器重启后,会将执行该aof文件,达到数据恢复的目的。

3.2 优化AOF文件
可以使用BGREWRITEAOF命令来重写AOF文件,目的是去除数据的中间执行过程,保留最终数据命令即可。

3.3 重写策略
【Redis】的持久化详解

3.4 文件同步策略
【Redis】的持久化详解
注意:即使每秒做文件同步也可能导致数据丢失。

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹