redis持久化

为什么要持久化?

redis 是内存数据库 如果不将内存中的数据库状态保存到磁盘中 那么一旦服务器中的数据库状态也会消失 所有redis 提供了持久化功能

RDB(redis database)

在指定的间隔时间内 将内存中数据集快照写入磁盘 也就是Snapshot快照 恢复时 是将快照文件直接读到内存中

redis会单独创建
一子进程来进行持久化:
一个子进程来进行持久化
会先将数据写入到一个临时文件中
待持久化过程都结束了
再用这个临时文件替换上次持久化的文件
主进程不进行任何io持久化操作
这就确保了极高的性能 如果需要进行大规模数据的恢复
且对于数据恢复的完整性不死非常明年 RDB要方式要比AOF方式更加高效

RDB的缺点是

最后一次持久化后的数据可能会丢失最后一次数据

我们默认的持久化是RDB 一般不需要修改这个配置
RDB保存的文件是 dump.rdb
都是在我们的redis,conf

触发机制生成dump.rdb

1、save 的规则满足的情况下 会自动触发rdb规则
2、执行flushall命令,也会触发我们的rdb规则
3、推出redis 也会产生rdb文件

如何恢复rdb文件

1、只需要将rdb文件放在我们的redis 启动目录 就可以
redis启动的时候就会自动检查dump.rdb文件 恢复其中的数据
2、查看需要存在的位置 使用
在这里插入图片描述
如果在这个目录下存在dump.rdb文件 启动就会自动恢复其中的数据

几乎就是他自己的默认的配置就够用了 但是我们还是要去学习

优点:
1、适合大规模的数据恢复! dump.rdb
2、如果对数据的完整性要求不高
缺点:
1、需要一定的时间间隔进行操作 如果rredis 意外宕机 这个最后一次 修改就没有的了
2、fork进程的时候 会占用内存空间

AOF(Append Only File)

将我们的所有命令都记录下来 history 恢复的时候就把这个文件全部执行一遍

以日志的形式来记录每个写的操作 将redis执行过的所有指令记录下来 只许追加文件但不可以改写文件
redis启动之初会读取该文件重新构建数据 redis重启的话 会根据日志文件的内容跟将写指令从前到后执行
一次以完成数据的恢复工作请添加图片描述
默认是不开启的,我们需要手动进行配置 我们只需要将appendonly 改为yes 就开启了 AOF

重启Redis就生效了
如果aof文件有错位 这时候 redis 就是启动不起来我们要修复这个配置文件 aof文件
redis 提供了一个工具 redis-check-aof --fix

优点

1、每一次修改都同步文件的完整性更加好
2、每秒同步 可能会丢失一秒的数据
3、从不同步效率最高的

缺点

1、相对与数据文件来说 aof远远大于rdb,修复的速度也比rdb慢

RDB和AOF的实际应用

在主从复制中rdb 就是备用 在从机上面进程备份

扩展:1、RDB持久化 方式能够在指定的时间间隔内对数据进行快照存储
2、AOF持久化方式记录每次对服务器进行写的操作当服务器重启的时候会重新开始执行这些命令来恢复原始的数据 AOF命令以redis协议追加到保存每次写的操作 redis还能对aof文件进行后台重写 使AOF文件不至于过大
3、只做缓存 如果只希望数据在服务器运行的时候在 也可以不使用持久化

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值