千家信息网

Redis的持久化机制采用RDB还是AOF

发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,这篇文章主要讲解了"Redis的持久化机制采用RDB还是AOF",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Redis的持久化机制采用RDB还是AOF
千家信息网最后更新 2025年02月12日Redis的持久化机制采用RDB还是AOF

这篇文章主要讲解了"Redis的持久化机制采用RDB还是AOF",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Redis的持久化机制采用RDB还是AOF"吧!

RDB

1. 什么是RDB

RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动redis后,则会恢复。

2. 备份与恢复

内存备份 --> 磁盘临时文件
临时文件 --> 恢复到内存

3. RDB优劣势

  • 优势

    • 每隔一段时间备份,全量备份

    • 灾备简单,可以远程传输

    • 子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除),保证备份数据的的完整性

    • 相对AOF来说,当有更大文件的时候可以快速重启恢复

  • 劣势

    • 发生故障是,有可能会丢失最后一次的备份数据

    • 子进程所占用的内存比会和父进程一模一样,如会造成CPU负担

    • 由于定时全量备份是重量级操作,所以对于实时备份,就无法处理了。

4. RDB的配置

  • 保存位置,可以在redis.conf自定义:
    /user/local/redis/working/dump.rdb

  • 保存机制:

save 900 1save 300 10save 60 10000save 10 3
* 如果1个缓存更新,则15分钟后备份* 如果10个缓存更新,则5分钟后备份* 如果10000个缓存更新,则1分钟后备份
  • stop-writes-on-bgsave-error

    • yes:如果save过程出错,则停止写操作

    • no:可能造成数据不一致

  • rdbcompression

    • yes:开启rdb压缩模式

    • no:关闭,会节约cpu损耗,但是文件会大,道理同nginx

  • rdbchecksum

    • yes:使用CRC64算法校验对rdb进行数据校验,有10%性能损耗

    • no:不校验

总结

RDB适合大量数据的恢复,但是数据的完整性和一致性可能会不足。

AOF

AOF特点

  • 以日志的形式来记录用户请求的写操作。读操作不会记录,因为写操作才会存存储。

  • 文件以追加的形式而不是修改的形式。

  • redis的aof恢复其实就是把追加的文件从开始到结尾读取执行写操作。

优势

  • AOF更加耐用,可以以秒级别为单位备份,如果发生问题,也只会丢失最后一秒的数据,大大增加了可靠性和数据完整性。所以AOF可以每秒备份一次,使用fsync操作。

  • 以log日志形式追加,如果磁盘满了,会执行 redis-check-aof 工具

  • 当数据太大的时候,redis可以在后台自动重写aof。当redis继续把日志追加到老的文件中去时,重写也是非常安全的,不会影响客户端的读写操作。

  • AOF 日志包含的所有写操作,会更加便于redis的解析恢复。

劣势

  • 相同的数据,同一份数据,AOF比RDB大

  • 针对不同的同步机制,AOF会比RDB慢,因为AOF每秒都会备份做写操作,这样相对与RDB来说就略低。 每秒备份fsync没毛病,但是如果客户端的每次写入就做一次备份fsync的话,那么redis的性能就会下降。

  • AOF发生过bug,就是数据恢复的时候数据不完整,这样显得AOF会比较脆弱,容易出现bug,因为AOF没有RDB那么简单,但是呢为了防止bug的产生,AOF就不会根据旧的指令去重构,而是根据当时缓存中存在的数据指令去做重构,这样就更加健壮和可靠了。

AOF的配置

`# AOF 默认关闭,yes可以开启appendonly no# AOF 的文件名appendfilename "appendonly.aof"# no:不同步# everysec:每秒备份,推荐使用# always:每次操作都会备份,安全并且数据完整,但是慢性能差appendfsync everysec# 重写的时候是否要同步,no可以保证数据安全no-appendfsync-on-rewrite no# 重写机制:避免文件越来越大,自动优化压缩指令,会fork一个新的进程去完成重写动作,新进程里的内存数据会被重写,此时旧的aof文件不会被读取使用,类似rdb# 当前AOF文件的大小是上次AOF大小的100% 并且文件体积达到64m,满足两者则触发重写auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb`

到底采用RDB还是AOF呢?

  • 如果你能接受一段时间的缓存丢失,那么可以使用RDB

  • 如果你对实时性的数据比较care,那么就用AOF

  • 使用RDB和AOF结合一起做持久化,RDB做冷备,可以在不同时期对不同版本做恢复,AOF做热备,保证数据仅仅只有1秒的损失。当AOF破损不可用了,那么再用RDB恢复,这样就做到了两者的相互结合,也就是说Redis恢复会先加载AOF,如果AOF有问题会再加载RDB,这样就达到冷热备份的目的了。

感谢各位的阅读,以上就是"Redis的持久化机制采用RDB还是AOF"的内容了,经过本文的学习后,相信大家对Redis的持久化机制采用RDB还是AOF这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

数据 备份 文件 机制 内存 时候 进程 还是 缓存 形式 日志 不同 安全 劣势 完整性 就是 性能 指令 时间 磁盘 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 宁波软件开发公司20强 wifi域名服务器 网络服务器安装与配置体会 在哪可以找到迷你世界的服务器 无法连接服务器网络连接不可用 苏州戴尔服务器巡检情况 石家庄明优网络技术有限公司 阿里云数据库连接池 联想服务器 价格 考研电子信息网络安全好吗 国家食品安全信息中心数据库 麒麟软件商店数据库连接失败 一台电脑能开几个传奇服务器 银行软件开发岗加班吗 达梦数据库用户口令修改 特斯拉服务器落地中国时间 高校网络安全保卫工作 php不直连数据库 中国农业银行显示找不到服务器 qq的接收邮件服务器 万方数据库竞赛题库和答案 海南网络技术服务热线 网络安全黑板报幼儿园 江西专业软件开发服务五星服务 中学生网络安全教学稿 如何安全找特殊服务器 简单数据库与程序设计 网络安全讲课软件 高校网络安全保卫工作 C 软件开发需要学多久
0