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. CSS权重;慎用!important

    初初接触样式的前端开发者在碰到样式覆盖时,最先选择的往往是!important. 但是这种做法不好,应该优先考虑从样式的级联属性或者位置来解决问题. 切记以下情况永远不要使用!important: 1 ...

  2. Linux命令行学习日志-ps ax

    当我们需要查询某个运行中的进程的时候,这个命令就显得很有用了,可以查看当前进程的PID和状态(S代表睡眠,SW代表睡眠和等待,R表示运行中) ps ax //查看当前运行中的进程

  3. codeforces gym #101161H - Witcher Potion(状压DP)

    题目链接: http://codeforces.com/gym/101161/attachments 题意: 总共有n瓶药可供选择 每瓶药可以增加$e_i$点体力,和$p_i$点毒性 每分钟消耗1点毒 ...

  4. JavaWeb_(Hibernate框架)Hibernate论坛项目中一对多案例

    基于SSH论坛小型项目 传送门 用户和发帖进行举例 一对多关系:一个用户可以发表多个帖子 一对一关系:一个帖子属于一个用户发布 创建数据库用户user表 CREATE TABLE `hforum`.` ...

  5. 使用Pillow(PIL)库实现中文字符画

    上班摸鱼写的,不多说了,直接上脚本 #coding=utf-8 from PIL import Image from PIL import ImageDraw from PIL import Imag ...

  6. Nslookup: command not found error on RHEL/CentOS 7

    Reference: https://unix.stackexchange.com/questions/164210/nslookup-command-not-found-error-on-rhel- ...

  7. How to get full path of StreamWriter

     How to get full path of StreamWriter   In my version of the framework, this seems to work: string f ...

  8. Python接口测试-模块引用与映射

    PyCharm中发现模块引用老是有各种问题 可以用映射来解决,例如需要调用登录模块里面的东西的时,可以这样处理: 登录模块:1-login.py import this import requests ...

  9. R-CNN论文阅读摘要

    论文链接: https://arxiv.org/pdf/1311.2524.pdf Abstract Our approach combines two key insights: (1) one c ...

  10. redis-Sentinel持续高可用

    自动故障转移机制 redis目前只支持主从复制备份(不支持主主复制),当主redis挂了,从redis只能提供读服务,无法提供写服务.所以,还得想办法,当主redis挂了,让从redis升级成为主re ...