Redis实战(二)CentOS 7上Redis两种方式持久化
阅读原文时间:2024年06月21日阅读:1

  RDB方式是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并且存储到硬盘上。

  进行快照的条件在配置文件中指定,有2个参数构成:时间和改动的键的个数,当在指定时间内被更改的键的个数大于指定数值时就会进行快照。

RDB是Redis的默认持久化方式。

1.在配置文件中已经预置了3个条件

save 900 1 #15分钟内有至少1个键被更改则进行快照

save 300 10  #5分钟内至少有10个键被更改则进行快照

save 60 10000  #1分钟内至少有100000个键被更改则进行快照

  以上条件之间是“或”的关系。

  默认的rdb的文件路径是在当前目录,文件名是:dump.rdb,可以在配置文件中修改路径和文件名,分别是dir和dbfilename。

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

2.RDB的快照过程如下:

  1)Redis使用fork函数复制一份当前进程(父进程)的副本(子进程);

  2)父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入到硬盘中的临时文件;

  3)当子进程写入完所有数据后会用该临时文件替换旧的RDB文件。

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

  可以通过SAVEBGSAVE命令来手动快照,两个命令的区别是前者是由主进程进行快照,会阻塞其他请求,后者是通过fork子进程快照操作。

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

  默认配置appendonly no是关闭的,修改配置appendonly yes即可开启。

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

  可以使用BGREWRITEAOF命令来重写AOF文件。

  重写策略的参数设置: auto-aof-rewrite-percentage 100 当前的AOF文件大小超过上一次重写时的AOF文件大小的百分之多少时会再次进行重写,如果之前没有重写过,则以启动时的AOF文件大小为依据。

  auto-aof-rewrite-min-size 64mb 限制了允许重写的最小AOF文件大小,通常在AOF文件很小的时候即使其中有些冗余的命令也是可以忽略的。

  文件写入默认情况下会先写入到系统的缓存中,系统每30秒同步一次,才是真正的写入到硬盘,如果在这30秒服务器宕机那数据也会丢失的,Redis可以通过配置来修改同步策略:

appendfsync always 每次都同步 (最安全但是最慢)

appendfsync everysec 每秒同步 (默认的同步策略)

appendfsync no 不主动同步,由操作系统来决定 (最快但是不安全)

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章