当前位置: 首页 > news >正文

【Redis】Redis的持久化

目录

传统数据库事务的ACID

Redis的持久化方案

持久化配置

①纯内存运行

②RDB模式

优缺点

临时文件

触发RDB规则的情况

如何恢复数据

③AOF模式

日志文件

优缺点


传统数据库事务的ACID

 

Redis的持久化方案

        ①在一定时间内,命令执行次数达到一定上限时,会生成一个文件,文件会不断覆盖,生成文件的IO操作少,但是可能会丢失数据。

        ②记录“写命令”

每行命令都记录

每秒记录一次命令

不记录(默认)

        Redis是操作完之后才进行AOF日志记录(只记录操作的指令记录)

持久化配置

        Redis是否具备持久化,取决于其持久化配置。

①纯内存运行

        不具备持久化,服务器一旦停机会导致数据丢失。

RDB模式

        取决于RDB策略,满足策略的情况执行持久化。

  • 在指定的时间间隔对数据进行快照存储,恢复时会将快照文件直接读取到内存中。
  • Redis会单独创建一个(fork)子线程进行持久化操作,将数据写入到一个临时文件中,等待持久化操作结束后,将这个临时文件替换上次的临时文件,这个过程不执行IO操作,能够保证极高的性能。
  • 如果需要进行大批量的数据恢复,而且对数据恢复的完整性不非常敏感的话,RDB模式会比AOF模式更加高效。

优缺点

优点适合大规模数据、对数据要求不高的场景
缺点需要一定时间间隔进行操作
如果Redis意外宕机后,最后一次持久化后的数据可能会丢失
fork线程会占用一定的时间与空间,因为它会产生临时文件

临时文件

        RDB模式会产生临时文件的名字为:dump.rdb(在Redis启动目录下)

        在redis.conf配置文件有规定RDB执行的规则:

默认:

#   In the example below the behaviour will be to save:

#   after 900 sec (15 min) if at least 1 key changed

#   after 300 sec (5 min) if at least 10 keys changed

#   after 60 sec if at least 10000 keys changed

触发RDB规则的情况

        ①满足sava规则的情况。

        ②执行flushall(清除所有库中的所有key)。

        ③退出Redis时。

如何恢复数据

        将rdb文件放入Redis启动目录,Redis启动时会检查是否存在rdb文件,存在则恢复数据。

AOF模式

        程序会在执行命令/指令时将指令保存在硬盘上。【aop(追加)】

  • 记录每次对服务器的写操作,当服务器重启时会重新执行这些命令恢复原有数据,将全部记录在恢复时执行一遍。
  • 以日志的形式记录写入(set)操作,读(get)操作不记录,此日志文件尽可查看,如手动修改将损坏文件,即使使用redis-chek-aop.exe --fix修复工具进行修复也会缺失数据。

日志文件

        日志的保存文件名是appendonly.aof

#appendonly yes   开启aof模式

#appendfsync always  每次都修改,消耗性能

#appendfsync everysec  每秒修改一次,可能会丢失1秒的数据

# appendfsync no  不开启aof模式

优缺点

        优点:每次更新时同步,文件的完成性更好

        缺点:相较与edb文件,恢复速度慢,效率不高

 

相关文章:

  • LibreOJ_10010
  • 数据增强
  • 一文搞懂堆外内存(模拟内存泄漏)
  • 还在调API写所谓的AI“女友”,唠了唠了,教你基于python咱们“new”一个(深度学习)
  • Win7纯净版系统镜像64位介绍
  • Kali系统MSF模块暴力破解MySQL弱口令漏洞
  • [附源码]java毕业设计疫情环境下的酒店管理系统
  • kafka配置外网访问
  • java每一练(3)
  • Java学习----前端4
  • ABAP中 delete 语句的使用
  • cesium火箭发射,模型控制,模型动画,模型移动
  • http请求走私漏洞原理,利用,检测,防护
  • Docker学习(3)—— 将容器转化为新的镜像,并将新镜像发布到阿里云公共仓库或私有仓库
  • cpu天梯图2022年11月 cpu排行榜天梯图2022
  • Linux的基本协议与他的堂兄堂弟
  • FEDformer 代码分析(2)
  • UCloud 对象存储使用
  • web前端-javascript-逻辑运算符(! 非取反,短路的 与,短路的|| 或, || 非布尔值的情况,对于非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算,并且返回)
  • 油藏生产业务+机器学习代理优化算法
  • [深度学习] python基础支持汇总
  • JSP文件上传
  • qt人员管理模块(模块化程序)功能块复制直接使用不冲突
  • List——顺序表与链表(二)
  • PCB入门介绍与电阻电容电感类元件的创建
  • MongoDB入门与实战-第五章-MongoDB副本集
  • 山东电蒸汽发生器厂家_清洗机蒸汽发生器
  • 15吨燃煤锅炉改生物质锅炉可以吗_燃煤锅炉环保要求
  • 生物质颗粒锅炉点不着_生物质颗粒能否替代煤锅炉