前面已经总结了Redis 的安装和使用今天讲下Redis 的持久化。

  

  redis跟memcached类似,都是内存数据库,不过redis支持数据持久化,也就是说redis可以将内存中的数据同步到磁盘来持久化,以确保redis 的数据安全。

 

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

  save 300 10  #300秒内容如超过10个key被修改,则发起快照保存

   

  不过,由于快照方式是在一定间隔时间做一次的,如果对数据的完整性非常敏感,那么RDB方式就不太适合你,因为即使你每2分钟都持久化一次,当redis故障时,仍然会有近2分钟的数据丢失。所以,redis还提供了另一种持久化方式,那就是AOF。

 

 AOF

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

  Redis会将收到的每一个写操作(如SET等)通过write函数追加到AOF文件的末尾。默认的AOF持久化策略是每秒钟fsync一次(把缓存中的写指令记录到磁盘中)。

  当Redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

  appendonly yes           #启用aof持久化方式# appendfsync always    #每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用appendfsync everysec     #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐# appendfsync no       #完全依赖os,性能最好,持久化没保证

  

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

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

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

 如何选择RDB和AOF

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

Redis总结(四)Redis 的持久化相关推荐

  1. Redis(十四):RDB持久化(二)

    RDB文件架构 Redis部分 db_version部分 databases部分 key_value_pairs部分 VALUE编码 字符串对象 列表对象 集合对象 哈希对象 有序集合对象 INSET ...

  2. 深入剖析Redis系列(四) - Redis数据结构与全局命令概述

    前言 Redis 提供了 5 种数据结构.理解每种数据结构的特点,对于 Redis 的 开发运维 非常重要,同时掌握 Redis 的 单线程命令处理 机制,会使 数据结构 和 命令 的选择事半功倍. ...

  3. 深入剖析Redis系列(五) - Redis数据结构之字符串

    前言 字符串类型 是 Redis 最基础的数据结构.字符串类型 的值实际可以是 字符串(简单 和 复杂 的字符串,例如 JSON.XML).数字(整数.浮点数),甚至是 二进制(图片.音频.视频),但 ...

  4. 深入剖析Redis系列(七) - Redis数据结构之列表

    前言 列表(list)类型是用来存储多个 有序 的 字符串.在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表.获取 指定索引下标 ...

  5. 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

  6. 二十四 Redis消息订阅事务持久化

    Redis数据类型: Redis控制5种数据类型:String,list,hash,set,sorted-set 添加数据,删除数据,获取数据,查看有多少个元素,判断元素是否存在 key通用操作 JR ...

  7. Redis基础学习(四)—Redis的持久化

    一.概述 Redis的强大性能很大程度上都是因为数据时存在内存中的,然而当Redis重启时,所有存储在内存中的数据将会丢失,所以我们要将内存中的数据持久化. Redis支持两种数据持久化的方式: RD ...

  8. Redis(2)---数据持久化

    Redis(2)---数据持久化 原文:Redis(2)---数据持久化 数据持久化 Redis有两种持久化的方式:快照(RDB文件)和追加式文件(AOF文件) (1)RDB持久化方式是在一个特定的间 ...

  9. Redis学习、缓存、持久化、哨兵模式

    个人博客欢迎访问 总结不易,如果对你有帮助,请点赞关注支持一下 微信搜索程序dunk,关注公众号,获取博客源码 我写代码是为了更好的表达自我,这是艺术创作,而不单单是为了把事情搞定. -Antirez ...

  10. redis的四种模式

    一:什么是redis Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value ...

最新文章

  1. 这是预编译工具生成的文件_组件化架构 10.编译优化
  2. python set过滤
  3. +1.1向量 链表 数组
  4. softmax函数为什么叫softmax?
  5. java1002java,疯狂java学习笔记1002---抽象类及接口
  6. redis通过expire设置存活期注意问题
  7. Java 设计模式之 Composite 组合模式
  8. pycharm打开脚本报错Gtk-Message: Failed to load module canberra-gtk-module
  9. wordpress 文章php,wordpress怎么发长文章
  10. bigemap如何下生成CGCS2000坐标系等高线
  11. CSS实现标题样式(自用笔记)
  12. python绘图画猫咪_Turtle库画小猫咪
  13. Barsetto百胜图美式全自动磨豆咖啡机评测,最轻松美式现磨体验
  14. php泥浆护壁,扩孔泥浆护壁式集束式潜孔锤技术
  15. 1021. Couples
  16. 三战南京大学计算机学硕上岸,初试403经验贴
  17. 全面接入:ChatGPT杀进10个商业应用,让AI替你打工
  18. 2023武汉理工大学计算机考研信息汇总
  19. 新玺配资:为什么市场高开低走?
  20. 大数据之数据质量检查

热门文章

  1. api 定位 微信小程序 精度_聊聊微信小程序内置地图定位的精确性
  2. inc指令是什么意思_mips指令集与cpu架构(一)
  3. html使div内部元素水平排列_元素周期表探讨
  4. java 编写 欢迎你_社团联合会——java编程协会欢迎你的加入
  5. java tika pdf转图片_使用tika将pdf转为html
  6. 约瑟夫环 猴子选大王的问题
  7. java面试题十五 for循环一个题目
  8. JavaScript实现单词首字母大写的方法集锦
  9. 大学学习论坛 需求分析报告.菜鸟版.多喷.看看问题所在
  10. 手把手教你python实现量价形态选股知乎_【手把手教你】Python实现基于事件驱动的量化回测...