【Redis】的持久化详解

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 文件同步策略
    这里写图片描述
    注意:即使每秒做文件同步也可能导致数据丢失。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值