您的位置:首页 > 数据库 > Redis

【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 文件同步策略



注意:即使每秒做文件同步也可能导致数据丢失。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: