入门redis四(持久化)

一.RDB(Redis DataBase)

1.入门须知

  • RDB是内存数据库,意味着如果服务器进程退出,而RDB的数据没有由内存保存到磁盘,则会丢失这部分数据,因而redis提供了持久化功能。

2.深入了解

  • 配置路径redis.conf-》##SNAPSHOTTING##(快照)
  • 执行流程图
    在这里插入图片描述
  • 流程说明redis会单独创建一个子进程来进行持久化,先将数据写到一个临时文件,待持久化过程结束,再用这个临时文件替代上次持久化好的文件。整个过程中,主进程不进行任何IO操作,确保了高性能。缺点是最后一次持久化可能丢失数据。
  • 原理指定时间间隔内将内存中的数据集快照写入磁盘,它回复时是将快照文件直接读到内存里。
  • 保存文件dump.rdb(默认文件名),修改在redis.conf的如下处:
    在这里插入图片描述

3.触发机制

  • save规则满足条件下,会自动触发rdb规则,下图即为save规则,位置在redis.conf的快照部分。解释:中间代表指定时间内,最右边代表修改次数。
    在这里插入图片描述

  • 执行flushdb时,也会触发rdb规则

  • 退出redis,会产生rdb文件

4.恢复rdb文件

  • 将rdb文件放在redis启动目录,则redis启动时会自动检查该文件并恢复数据
  • 查看需要存在的位置
127.0.0.1:6379> config get dir

5.优缺点

  • 优点1.适合大规模数据回复;2.对数据完整性要求不高。
  • 缺点1.需要在时间间隔下进程操作,容易在发生意外时丢失数据;2.fork子进程会占用一定空间。

二.AOF(Append Only File)

1.执行流程

在这里插入图片描述

  • 说明日志形式记录每一个写操作,将redis执行过的所有指令记录下来,只许追加文件不能修改文件。redis启动后会读取该文件重构数据,即redis重启时会根据日志文件内容将写命令从前到后执行一次以完成数据回复工作。

2.配置

  • 配置位置:redis.conf
  • 开启appendly yes(默认为no)
  • 配置文件名:appendly.aof(默认)
  • 配置策略
    1.appendfsync always #每次修改
    2.appendfsync everysec #每秒修改
    3.appendfsync no #不修改

3.错误记录

  • 错误:appendonly.aof文件内容有误,将导致redis启动失败。
  • 解决办法:利用redis-check-aof --fix appendonly.aof(注意得在redis-check-aof文件所在目录下执行命令,例如笔者的目录是bin)

缺点:
相对于数据文件来说,aof远大于rdb,修复速度也比rdb慢;而且运行效率比rdb低,因此经常默认配置的是rdb

三.扩展

1.同时开启这两种持久化方式

  • 在这种情况下,redis重启时会优先载入AOF来恢复原始数据,因为通常情况下aof文件保存的数据比rdb文件保存的更完整
  • RDB文件数据不实时,同时开启这两种方式,服务器重启也会找aof文件,那是否只需要aof?建议是不要,rdb更适合备份数据库,快速重启,而且不会有aof可能潜在的Bug,可以防万一

2.缓存场景

  • 如果只希望在服务器运行时数据存在,可以不使用任何持久化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值