一:什么是持久化?

    - Redis 是内存级别的数据库。所谓持久化,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)中。

  - 可以持久读取操作等的数据。

  - Redis 支持 RDB/AOF 的持久化方式

二:RDB 持久化

  - 本质

    - 通过 快照 方式来进行持久化。

  - RDB 配置

    • ################################ SNAPSHOTTING  #################################
      # 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
      # Save the DB on disk:
      #
      # save <seconds> <changes>
      #
      # Will save the DB if both the given number of seconds and the given
      # number of write operations against the DB occurred.
      #
      # 满足以下条件将会同步数据:
      # 900秒(15分钟)内有1个键被更改
      # 300秒(5分钟) 内有10个键被更改
      # 60秒 内有10000个键被更改
      # Note: 可以把所有“save”行注释掉,这样就取消同步操作了
      # 因为 RDB 只做后备使用,建议只在 slave 下进行, 15 分钟同步一次就可以,也就是说只保留 save 900 1 这个设置 save
      save
      save # 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
      rdbcompression yes # 指定本地数据库文件名,默认值为dump.rdb
      dbfilename dump.rdb

  - RDB 相关命令

    - 手动执行 SAVE / BGSAVE 生成快照。

      - 在执行 SAVE 时, Redis会同步执行快照,同时堵塞其他客户端命令,所以要避免在生产环境中直接使用。

      - 手动快照推荐 BGSAVE ,后台执行,对其他客户端无影响。

      - 执行 LASTSAVE 可以查看最近一次快照的时间戳。

  - 原理

    - Redis 在执行快照时使用 fock 函数复制一份当前进程(父进程)的副本(子进程);

    - 父进程继续接受客户端请求,子进程写入。

    - 子进程写入完成之后,用临时文件替换旧的 RDB 文件,一次快照完成。

三:AOF 持久化

  - 基本概念

    - Redis 默认是不开启 AOF 持久化的。

  - AOF 配置

    • # 配置 appendonly 开启 AOF 持久化
      appendonly yes
       
      # AOF 持久话文件名名称
      appendfilename “appendonly.aof"
       
      # AOF 持久化策略
      #     always 每次写入同步(最安全/慢)
      #     everysec 默认。每秒异步同步一次,如果一秒钟内宕机,有数据丢失
      #     no 将缓存回写的策略交给系统,linux 默认是30秒将缓冲区的数据回写硬盘的
      appendfsync always
       
      # rewrite 重写日志
      #     重新整理 AOF 日志。
      #     在 rewrite 结束之后,rewrite产生的新数据会导致文件的I/O,所以硬盘足够的情况下,应该减小重写次数,默认大小可以设置到 5G 以上
      auto-aof-rewrite-percentage 100 // 大于上次重写的百分比
      auto-aof-rewrite-min-size 64mb // 允许重写的最小

四:AOF / RDB 相关

  - RDB与AOF同时开启  默认先加载AOF的配置文件

  - 相同数据集,AOF文件要远大于RDB文件,恢复速度慢于RDB

  - AOF运行效率慢于RDB,但是同步策略效率好,不同步效率和RDB相同

五:应用场景

  - 备份

    - 对数据一致性有要求的请使用 AOF

    - 当数据量大,且对恢复速度有要求,并且数据的一致性要求不高的话,可以只使用RDB

  - 只做缓存

    - 不用开启任何的持久化方式

《Redis 持久化》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. Centos7.x 执行top命令教程

    一.作用 top命令用来显示执行中的进程,使用权限是所有用户 二.格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 三.命令参数解释 d:指定更新的间隔,以秒计 ...

  2. 解决 meld 出现 locale.setlocale(locale.LC_ALL,'') 失败的问题

    . . . . . meld 是一款免费的文件比较工具,官网地址:http://meldmerge.org/ 在 Linux 环境使用 meld 的时候,可能会由于语言区域的配置问题导致它无法启动,会 ...

  3. java-信息安全(十六)-双向认证

    原文地址 http://snowolf.iteye.com/blog/510985 对于双向认证,做一个简单的描述. 服务器端下发证书,客户端接受证书.证书带有公钥信息,用于验证服务器端.对数据加密/ ...

  4. Dedecms5.7搜索结果页空白无内容的解决方法

    Dedecms5.7搜索结果页空白.没有内容的解决方法 许多网友在修改dedecms5.7版本的搜索功能时搜索空白的解决方法,正解如下: 系统设置—>其他选项—->是否启用文章全文检索功能 ...

  5. POJ 1904 King&#39;s Quest(强连通)

    Language: Default King's Quest Time Limit: 15000MS   Memory Limit: 65536K Total Submissions: 7635   ...

  6. 8 -- 深入使用Spring -- 5...1 启用Spring缓存

    8.5.1 启用Spring缓存 Spring配置文件专门为缓存提供了一个cache:命名空间,为了启用Spring缓存,需要在配置文件中导入cache:命名空间. 导入cache:命名空间之后,启用 ...

  7. NIO相关概念之Buffer

    Buffer的定义: 概念上,缓冲区是包在一个对象内的基本数据元素数组.Buffer类相比一个简单数组的优点是它将关于数据的数据内容和信息包含在一个单一的对象中.Buffer类以及它专有的子类定义了一 ...

  8. 8月10日CSS总结

    1.三角形光标转换 CSS: .one{ width: 0;­­ height: 0; border-top: 100px solid #000; border-right:100px solid t ...

  9. C# MVC+EF—WebApi

    上一篇搭建了页面,这里写下功能. 这里我用WebApi实现数据的增删改查. 一.新建Controller 为了区分明确,我在Controller文件夹下建立一个WebApi文件夹存放. 选中文件夹右键 ...

  10. position 有五个值:static、relative、absolute、fixed、inherit。

    position 有五个值:static.relative.absolute.fixed.inherit. static 是默认值.就是按正常的布局流从上到下从左到右布局,平常我们做网页时,没有指定 ...