redis持久化的两种方式

redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。

RDB,简而言之,就是将存储的数据快照的方式存储到磁盘上,

AOF,则是将redis执行过的所有写指令记录下来,通过write函数追加到AOF文件的末尾。在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。

其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。

如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache一样。

RDB

RDB(Redis DataBase),是将redis某一时刻的数据持久化到磁盘中,是一种快照式的持久化方法。默认的文件名为dump.rdb。

redis在进行数据持久化的过程中,会先将数据写入到一个临时文件中,待持久化过程都结束了,才会用这个临时文件替换上次持久化好的文件,以确保数据完整可用。

RDB的持久化配置

# 时间策略
save 900 1
save 300 10
save 60 10000# 文件名称
dbfilename dump.rdb# 文件保存路径
dir /home/work/app/redis/data/# 如果持久化出错,主进程是否停止写入
stop-writes-on-bgsave-error yes# 是否压缩
rdbcompression yes# 导入时是否检查
rdbchecksum yes   

配置其实非常简单,这里说一下持久化的时间策略具体是什么意思。

  • save 900 1 表示900s内如果有1条是写入命令,就触发产生一次快照,可以理解为就进行一次备份
  • save 300 10 表示300s内有10条写入,就产生快照

下面的类似,那么为什么需要配置这么多条规则呢?因为Redis每个时段的读写请求肯定不是均衡的,为了平衡性能与数据安全,我们可以自由定制什么情况下触发备份。所以这里就是根据自身Redis写入情况来进行合理配置。

stop-writes-on-bgsave-error yes 这个配置也是非常重要的一项配置,这是当备份进程出错时,主进程就停止接受新的写入操作,是为了保护持久化的数据一致性问题。如果自己的业务有完善的监控系统,可以禁止此项配置, 否则请开启。

关于压缩的配置 rdbcompression yes ,建议没有必要开启,毕竟Redis本身就属于CPU密集型服务器,再开启压缩会带来更多的CPU消耗,相比硬盘成本,CPU更值钱。

当然如果你想要禁用RDB配置,也是非常容易的,只需要在save的最后一行写上:save ""

 

AOF

AOF(Append Only File),即只允许追加不允许改写的文件。

Redis会将收到的每一个写操作(如SET等)通过write函数追加到AOF文件的末尾。默认的AOF持久化策略是每秒钟fsync一次(把缓存中的写指令记录到磁盘中)。当Redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

AOF的持久化配置

# 是否开启aof
appendonly yes# 文件名称
appendfilename "appendonly.aof"# 同步方式
appendfsync everysec# aof重写期间是否同步
no-appendfsync-on-rewrite no# 重写触发配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb# 加载aof时如果有错如何处理
aof-load-truncated yes# 文件重写策略
aof-rewrite-incremental-fsync yes

还是重点解释一些关键的配置:

appendfsync everysec 它其实有三种模式:

  • always:把每个写命令都立即同步到aof,很慢,但是很安全
  • everysec:每秒同步一次,是折中方案
  • no:redis不处理交给OS来处理,非常快,但是也最不安全

一般情况下都采用 everysec 配置,这样可以兼顾速度与安全,最多损失1s的数据。

aof-load-truncated yes 如果该配置启用,在加载时发现aof尾部不正确是,会向客户端写入一个log,但是会继续执行,如果设置为 no ,发现错误就会停止,必须修复后才能重新加载。

但AOF方式是将所有的命令记录下来,所以AOF文件要比RDB文件的体积大。而且,恢复速度也要慢于RDB方式。

redis提供了bgrewriteaof命令,会重新生成一个全新的AOF文件,其中便包括了可以恢复现有数据的最少的命令集。

需要注意到是重写aof文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,这点和快照有点类似。

如何选择RDB和AOF

对于我们应该选择RDB还是AOF,取决于具体的应用场景,官方的建议是两个同时使用。这样可以提供更可靠的持久化方案。

Redis的持久化方式相关推荐

  1. Redis专题-持久化方式

    很多时候我们为了缓解数据库的压力,都会使用缓存来作为数据的存储方式,最常用的就是使用redis.将热点数据缓存在redis中可以有效缓解数据库的压力.但是如果redis挂了那些重要的数据怎么办?red ...

  2. redis的持久化方式RDB和AOF的区别

    https://blog.csdn.net/m0_38110132/article/details/76906422 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITe ...

  3. redis专题:redis的持久化方式有哪些?redis数据的备份和恢复策略

    文章目录 1. 为什么要做redis持久化? 2. 持久化方式之---RDB快照(snapshot) 3. 持久化方式之---AOF(append-only file) 4. 持久化方式之---混合持 ...

  4. java缓存技术redis原理_Java架构师-5分钟带你深入理解Redis的持久化方式及其原理...

    Redis 提供了两种持久化方式,一种是基于快照形式的 RDB,另一种是基于日志形式的 AOF,每种方式都有自己的优缺点,本文将介绍 Redis 这两种持久化方式,希望阅读本文后你对 Redis 的这 ...

  5. redis的持久化方式有哪些?

    rdb https://blog.csdn.net/superJamison/article/details/114900757 https://www.cnblogs.com/chenliangcl ...

  6. 面试官:你知道Redis得持久化机制吗?

    阅读文本大概需要 13 分钟. 网上虽然已经有很多类似的介绍了,但我还是自己总结归纳了一下,自认为内容和细节都是比较齐全的. 文章篇幅有 4k 多字,货有点干,断断续续写了好几天,希望对大家有帮助.不 ...

  7. Redis 缓存穿透、雪崩、缓存数据库不一致、持久化方式、分布式锁、过期策略

    1. Redis 缓存穿透 1.1 Redis 缓存穿透概念 访问了不存在的 key,缓存未命中,请求会穿透到 DB,量大时可能会对 DB 造成压力导致服务异常. 由于不恰当的业务功能实现,或者外部恶 ...

  8. redis的两种持久化方式详解

    一.背景 在实际开发中,为了保证数据的完整性,防止数据丢失,我们除了在原有的传统数据库保存数据的同时,最好是再用redis持久化再保存一次数据.如果仅仅是使用redis而不进行持久化配置的话,当red ...

  9. redis同步效率秒_redis过期策略、内存淘汰策略、持久化方式、主从复制

    一.Redis的过期策略以及内存淘汰策略: 1.过期策略:定期删除+惰性删除: ①定期删除:redis默认每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果有过期就删除.注意这里 ...

  10. Redis两种持久化方式(RDBAOF)

    爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis的持久化过程中并不需要我们开发人员过多的参与,我们要做的是什么呢? ...

最新文章

  1. Python编程基础:第三十节 文件检测File Detection
  2. 给用户增加SAP_ALL权限
  3. pc css框架,PC端框架—semantic ui
  4. Ubuntu 图形桌面死机重启(机器不重启)
  5. 「Ruby Sqlite3」How to install sqlite3 for ruby? (solve: sqlite-ruby no such file...)
  6. Evince 3.7.5 发布,多格式文档浏览器
  7. maya_Arnold_Aov分层渲染插件 v1.1.0 更新下载及视频教程
  8. Unity 3D模型展示之场景更换背景
  9. PLC/WINCC实现远程监控的方法
  10. SQL练习(less-3)字符型注入 union联合查询
  11. 平安云加速器D-day开幕为企业量身打造“加速”之旅
  12. 大一学生WEB前端静态网页——唯品会1页 包含hover效果
  13. 秘密secret的安全性以及解决哪些痛点
  14. 多个操作语句的触发器为什么在执行时,只执行了第一句?
  15. Erupt Framework:开源神器,助你无需前端代码搞定企业级后台管理系统
  16. 计算机辅助普通话水平测试应试手册,普通话水平测试应试手册
  17. 【C++】小而快的Ninja
  18. 使用vmware worksttion的ovftool工具导出esxi虚拟机的ovf模板
  19. C语言 埃氏筛法求素数
  20. 2022年4月线上终端药品增长迅猛,市场政策合规进程加快

热门文章

  1. ubuntu和win7共享文件
  2. JS日期时间格式化函数
  3. Matlab中插值函数汇总及使用说明
  4. font-family 字体及各大主流网站对比
  5. 股票python量化交易014-计算收益率
  6. iOS 实现APP之间内容的拷贝、分享
  7. Java设计模式之观察者模式应用与实战
  8. 2022全新车型汽车配置参数数据库大全
  9. 电力-平衡式101规约报文解析
  10. 第三方易支付系统源码