Redis持久化

【1】概念

  Redis所有的数据存储在内存中,为了保证重启后,redis数据不丢失,需要把redis数据保存在磁盘中。

【2】持久化使用方式策略

  (1)RDB 方式:默认支持,不需要配置

      在指定的时间间隔内,将redis 内存中的数据集快照写入到磁盘当中去,比如每隔30S写入一次。

  (2)AOF方式

      以日志的形式记录服务器所处理的的每一个操作,在服务器启动之初,会读取该文件来重新构建redis数据库数据,以此来保证重启后数据库的数据是完整的。

  (3)不持久化

      单纯做缓存用

  (4)RDB+AOF 同时使用

【3】两种核心方法

  (1)RDB

    优势:

      (1.1)整个redis数据库只包含1个文件

      (1.2)对于灾难恢复而言,可以通过拷贝压缩等传输到异地机

      (1.3)性能最大化:在开始持久化的时候,只需要分一些进程,接下来就可以由子进程完成持计划的工作。

          可以避免服务器进程进行持久化操作。数据量大的时候,恢复速度很快。

    劣势:

      (1.1)对于高可用性和数据安全性而言:会丢失一个间隔内的数据,比如30秒一次持久化,但28秒的时候宕机了,那么就会丢自上一个备份后的28秒的所有操作。

      (1.2)当数据集非常大的时候,需要服务器停止一点时间甚至超过1s

    

    基本操作与配置:

      (1.1)默认的存盘配置如下(大概在文档15%的位置)

      

        如英文描述一样。

           save num1_second num2_key   每num1秒中,有num2个key有修改,则存盘

          这里的默认就是每900/300/60 秒 有 1/10/10000 个 key 被修改,就存盘。

      (1.2)默认redis数据库文件名称与存放路径(大概在文档15%的位置)

            

          上面是文件名,下面是上面文件所在的路径,  ./的意思就是,和当前打开的配置文件同一路径。

            

   

  (2)AOF

    优势:

      (2.1)3种同步策略

          《1》每秒同步:异步持计划,效率高,会丢失1S内数据

          《2》每修改同步:同步持久化,效率低,不会丢数据

          《3》不同步

      (2.2)日志文件

          《1》文件写入形式:使用的是append追加方式,如果宕机不会被破坏已经写入的数据。

          《2》宕机恢复:如果一个命令写到一般就宕机了,可以用 reids-check-aof 工具来解决数据一致性问题。

          《3》重写机制:如果日志文件过大,redis可以自动启用循环重写机制,redis以append的方式把最新操作数据写入到最老的日志文件中,同时redis还会创建一个新的文件来记录此期间哪些修改命令被执行了。因此在进行重写切换的时候,可以更好的保证数据那权限。

          《4》可读性强:日志文件记录了很详细的修改操作记录和数据,可以用此文件重建数据库。

    劣势

      (2.1)文件大小:AOF比RDB文件大许多

      (2.2)执行效率:每次操作都需要记录,比起RDB每过一段时间批量持久化记录,要慢不少。

      (2.3)需要额外配置:默认是关闭的,如果要启用则要把下图中第1行改成 yes,开启后下面就是文件名。

    基本操作与配置:   

     (2.1)开启:

        最后面的3行是同步策略,always 是修改后就立马同步,everysec 是每一秒,另外一个是不同步

         

      (2.2)修改配置:进行配置放开测试,修改如下图(要想生效,需要重启redis)

         

      (2.3)重启redis后查看文件:

        就可以发现文件了(默认路径是和conf文件在同一目录下)

        

      (2.4)模拟通过aof文件恢复

        《1》删掉所有key:flushall      -- 可以刷掉所有key

          《2》关掉redis  :./redis-cli shutdown

        《3》编辑aof文件:vim ./appendonly.aof

          对比一下我们的输入命令和aof文件记录的命令;

              

          把 flushall 在aof 文件里删掉,就可以用 aof 文件来重做恢复我们的数据库数据。(redis 会自动加载 aof 文件的数据操作)

         《4》启动redis -》连接 redis =》查看key是否存在

            

         《5》修复 aof文件(开启错误信息日志文件)

            故障模拟操作:当我没有关系redis 服务端的时候,我去修改了 aof文件

                重新启动,不报任何错误,但用 ps -ef|grep redis 发现进程没有起来。

                如何获取报错信息呢?修改 redis.conf 文件,找到logfile 字样,这里直接写名字的话默认路径是在配置文件相同目录下。也可以写URL

                  这里原本值是"",我改成了如下图。

                  

                

                再次启动服务,查看错误日志文件。报错信息如下

                

            需要我们修复 aof 文件之后,达成了一致性,才可以启动成功。

              ./redis-check-aof --fix ./appendonly.aof

            修复后然后再次启动,核验启动成功

              

          

          

Redis(1.4)Redis的持久化的更多相关文章

  1. Redis学习总结(1)——数据持久化

    以前研究Redis的时候,很多东西都不太明白,理解得也不太深,现在有时间重新拾起来看看,将一些心得记录下来,希望和大家一起探讨. 一.简介 Redis是一个单线程高可用的Key-Value存储系统,和 ...

  2. 4、解析配置文件 redis.conf、Redis持久化RDB、Redis的主从复制

    1.Units单位 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit 对大小写不敏感 2.INCLUDES包含 和我们的Struts2配置文件类似,可以通过includes包 ...

  3. redis的 rdb 和 aof 持久化的区别 [转]

    aof,rdb是两种 redis持久化的机制.用于crash后,redis的恢复. rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个d ...

  4. Redis之(五)持久化

    Redis提供了两种持久化的方式: (1)RDB(Redis DataBase)模式,就是在不同的时间点,将Redis存储的数据生成快照并存储到磁盘等介质上: (2)AOF(Append Only F ...

  5. 深入学习Redis(2):持久化

    前言 在上一篇文章中,介绍了Redis的内存模型,从这篇文章开始,将依次介绍Redis高可用相关的知识——持久化.复制(及读写分离).哨兵.以及集群. 本文将先说明上述几种技术分别解决了Redis高可 ...

  6. Redis的删除机制、持久化 主从

    转: Redis的删除机制.持久化 主从 Redis的使用分两点: 性能如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存.这样,后面的请求就去缓存中读取 ...

  7. 高可用Redis(七):Redis持久化

    1.什么是持久化 持久化就是将数据从掉电易失的内存同步到能够永久存储的设备上的过程 2.Redis为什么需要持久化 redis将数据保存在内存中,一旦Redis服务器被关闭,或者运行Redis服务的主 ...

  8. 【Redis篇】Redis持久化方式AOF和RDB

    一.前述 持久化概念:将数据从掉电易失的内存存放到能够永久存储的设备上. Redis持久化方式RDB(Redis DB)   hdfs:    fsimageAOF(AppendOnlyFile)   ...

  9. redis的 rdb 和 aof 持久化的区别

    aof,rdb是两种 redis持久化的机制.用于crash后,redis的恢复. rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个d ...

  10. Redis基础知识补充及持久化、备份介绍(二)--技术流ken

    Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...

随机推荐

  1. @EnableCaching缓存

    只有public方法,外部调用才有用,与异步相似 优化后 只有一个参数时,默认的key就参数,可以不写,比如这里写#id和不写key是一样的, 这里第二个如果不写,和其他两个指向就不是一回事了,现在三 ...

  2. ACM-ICPC 2018 南京赛区网络预赛Sum,线性筛处理积性函数

    SUM 题意:f(n)是n可以拆成多少组n=a*b,a和b都是不包含平方因子的方案数目,对于a!=b,n=a*b和n=b*a算两种方案,求∑i=1nf(i) 首先我们可以知道,n=1时f(1)=1, ...

  3. 两种dp模型

    两个常见模型 bzoj 4321 题意:编号为1~n的人排成一排,问有多少种排法使得任意相邻两人的编号之差不为1或-1. n<=1000 排列计数问题:考虑把数从小到大插入的过程进行dp. 设 ...

  4. HFUUOJ1024 动态开点线段树+标记永久化

    题意 分析 动态加点线段树,标记永久化好写常数小 Code #include<bits/stdc++.h> #define fi first #define se second #defi ...

  5. Druid数据源监控配置

    在web.xml中添加如下代码 <!-- druid监控 --> <servlet> <servlet-name>DruidStatView</servlet ...

  6. SSM整合(自己收藏)

    https://github.com/crossoverJie/SSM/blob/master/README-ZH.md

  7. tensorflow训练中出现nan

    问题暂记: 之后看 https://blog.csdn.net/qq_23142123/article/details/80526931 https://www.zhihu.com/question/ ...

  8. 转载: Windows下两种iocp实现的差距

    转自:http://blog.csdn.net/oldworm/article/details/6171430 之前几天说过,因为经典iocp实现(以下简称经典实现)多个io线程绑定在一个iocp上, ...

  9. redis 用scan 代替keys,hgetAll

    转载自:https://blog.csdn.net/w05980598/article/details/80264568 众所周知,当redis中key数量越大,keys 命令执行越慢,而且最重要的会 ...

  10. POJ3009-Curling 2.0(WA)

    POJ3009-Curling 2.0 题意: 要求把一个冰壶从起点“2”用最少的步数移动到终点“3” 其中0为移动区域,1为石头区域,冰壶一旦想着某个方向运动就不会停止,也不会改变方向(想想冰壶在冰 ...