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. asp.net实现浏览器大文件分片上传

    IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务 ...

  2. BZOJ 1097: [POI2007]旅游景点atr 状态压缩+Dijkstra

    题解: $k<=20,$ 考虑状压dp. 从 $1$ 号点走到 $n$ 号点经过的点的个数可能会非常多,但是强制要求经过的点一共才 $20$ 个. 而我们发现这个题好就好在可以经过某个城市,而不 ...

  3. Poj 3764 The xor-longest Path(Trie树+xor+贪心)

    The xor-longest Path Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6455 Accepted: 1392 ...

  4. IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表

    原文:  IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表 IDT,Interrupt Descriptor Table,中断描述符表是CPU用来处理中 ...

  5. 集合家族——LinkedList

    一.概述: LinkedList 与 ArrayList 一样实现 List 接口,只是 ArrayList 是 List 接口的大小可变数组的实现,LinkedList 是 List 接口链表的实现 ...

  6. TypeScript 技巧

    前言 很早以前就尝试过使用 TypeScript 来进行日常编码,但自己对静态类型语言的了解并不深入,再加上 TypeScript 的类型系统有着一定的复杂度,因此感觉自己并没有发挥好这门语言的优势, ...

  7. ViedoUtil获取视频的缩略图

    package com.jcf.utilsdemo; import android.graphics.Bitmap; import android.media.ThumbnailUtils; publ ...

  8. Jmeter使用实践- 基础介绍

    Jmeter使用实践- 基础介绍 随着市场上推出越来越多的测试工具,大家使用起来也比较盲目,就我个人而言,使用过LoadRunner和Jmeter 很多人倾向于LoadRunner,因为LR的功能更强 ...

  9. HBase管理与监控——内存调优

    HMaster 没有处理过重的负载,并且实际的数据服务不经过 HMaster,它的主要任务有2个:一.管理Hbase Table的 DDL操作, 二.region的分配工作,任务不是很艰巨. 但是如果 ...

  10. memcached-slab内存管理

    一.Memcache内存分配机制 关于这个机制网上有很多解释的,我个人的总结如下. Page为内存分配的最小单位. Memcached 的内存分配以page为单位,默认情况下一个page是1M,可以通 ...