简单科普一下redis的概念:(会的可忽略)

  • Redis的概念  

    redis基于内存的Key Value类型的NoSQL数据库.

  • Redis的特点
     1. Redis是一个高性能的Key/Value数据库     2. 基于内存     3. 数据类型丰富     4. 持久化     5. 订阅/发布模型
  • Redis与Memcache区别
         Redis是一个内存型数据库产品,而Memcache是一个内存型缓存产品,Redis可 以对内存中的数据进行持久化,而Memcache不行

下面来搞一下redis的持久化的一些知识

    补充:

      Redis中数据存储模式有2种:cache-only,persistence

      • cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一种安全性低/效率高/容易扩展的方式;
      • persistence即为内存中的数据持久备份到磁盘文件,在服务重启后可以恢复,此模式下数据相对安全。

      对于persistence持久化存储,Redis提供了两种持久化方法   

      • Redis DataBase(简称RDB)
      • Append-only file (简称AOF)

    注意:除了这两种方法,Redis在早起的版本还存在虚拟内存的方法,现在已经被废弃。

    

redis的持久化方案有两种,下面详细讲一下:

    redis持久化方式分为两种:RDB快照和AOF方式(默认为RDB模式),当Redis服务器重启的时候,会自动恢复数据,优先从AOF中恢复,其次才从RDB中恢复

  RDB原理:

    RDB:快照方式,允许你每隔一段时间对内存数据做一次快照然后存储到硬盘中。该方式是Redis默认的持久化方式。

      优点:使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能 
      缺点:RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候

    

    RDB可以通过在配置文件中配置时间或者改动键的个数来定义快照条件,编辑配置文件redis.conf,找到

      save 900 1  #15分钟之内至少有一个建被更改则进行快照
      save 300 10 #5分钟之内至少有10个建被更改则进行快照
      save 60 10000 #1分钟之内至少有1000个建被更改则进行快照
    

    他们之间是或的关系,RDB持久化到磁盘的文件默认路径是在当前目录,文件名为dump.rdb,你可以通过配置文件配置dir和dbfilename来指定文件目录和文件名称,RDB文件还可以进行压缩,你可以通过配置rdbcompression参数来进行压缩。

      

    

      

       RDB机制的完成流程
        1 redis的主进程 fork子进程 完成RDB写操作
        2 redis的主进程对提供服务,子进程会把当前数据库中的数据,写入临时文件
        3 当临时文件写好之后,覆盖原有的RDB快照文件

    AOF原理(增量式复制 日志式复制):

      AOF方式原理:AOF就可以做到全程持久化,Redis每执行一个修改数据的命令,都会把这个命令添加到AOF文件中,当Redis重启时,将会读取AOF文件进行“重放”以恢复到 Redis关闭前的最后时刻。

      注意:  默认redis会使用RDB的方式进行持久化.redis中即使用RDB 又使用AOF ,redis会应用AOF

      

      AOF运行机制

        

         AOF比RDB更加安全,记录每一次的写操作.但是如果在写的过程中掉电,也会丢失少量数据

        

      AOF:通过将发送到服务器的写操作命令记录下来,形成AOF文件,文件默认名称是appendonly.aof,可以通过appendfilename来指定文件名称。你可以通过配置文件打开AOF功能

      appendonly yes

      AOF的原理是直接把用户插入到服务器的命令追加到结尾,那么文件会原来越大,一些重复的写命令也会越来越多,这时,我们可以利用BGREWRITEAOF 命令来重写AOF,重写的配置如下:

      auto-aof-rewrite-percentage 100 #aof文件大小超过上次重写时文件大小的百分之几开始重写,如果之前没有写过,则根据启动时文件大小。

      auto-aof-rewrite-min-size 64mb #限制允许重写时的最小文件大小。

      AOF在同步内存数据到磁盘上时,并不是马上把文件写如到磁盘中,而是先把文件缓存到系统,然后每隔30秒将文件写入到磁盘中,我们可以在配置文件中配置同步的策略

      appendfsync always #每次都同步,保证数据不会丢失,但会慢
      appendfsync everysec #每秒同步,系统默认同步策略
      appendfsync no #不主动同步,由操作系统决定,快,但数据容易丢失   

注意:

    Redis持久化的问题:
      假定初始Redis使用RDB进行持久化 , 切换AOF进行持久化.问题?
        RDB --- bgsave ---- dump.rdb
        AOP --- appendonly.aof 获取数据

    热切换:
      改变redis.conf文件 appendonly yes

 

redis介绍(3)RDB和AOF原理解析的更多相关文章

  1. Redis 持久化之RDB和AOF

    Redis 持久化之RDB和AOF Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File).如果你想快速了解和使用RDB和AOF,可以直 ...

  2. 详解Redis持久化(RDB和AOF)

    详解Redis持久化(RDB和AOF) 什么是Redis持久化? Redis读写速度快.性能优越是因为它将所有数据存在了内存中,然而,当Redis进程退出或重启后,所有数据就会丢失.所以我们希望Red ...

  3. redis持久化(RDB、AOF、混合持久化)

    redis持久化(RDB.AOF.混合持久化) 1. RDB快照(snapshot) 在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中. 你可以对 Redis ...

  4. Redis的持久化——RDB和AOF

    推荐阅读 Redis 持久化之RDB和AOF --来自ITDragon龙 Redis Persistence --来自Redis官网文档

  5. Redis持久化之RDB与AOF

    1. Redis的持久化方式 Redis作为高效的缓存件,它的数据存放在内存中,如果没有配置持久化,那么数据会在重启后丢失,因此如果不是仅用Redis做缓存的话,需要开启Redis的持久化功能,将数据 ...

  6. Redis 持久化之RDB和AOF详解

    一.RDB 详解 RDB 是 Redis 默认的持久化方案.在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中.即在指定目录下生成一个dump.rdb文件.Redis 重启会通过 ...

  7. 【Redis】Redis 持久化之 RDB 与 AOF 详解

    一.Redis 持久化 我们知道Redis的数据是全部存储在内存中的,如果机器突然GG,那么数据就会全部丢失,因此需要有持久化机制来保证数据不会一位宕机而丢失.Redis 为我们提供了两种持久化方案, ...

  8. [转载]Redis 持久化之RDB和AOF

    原文链接:https://www.cnblogs.com/itdragon/p/7906481.html 温馨提示 在正式数据(当然是非生产环境啦)练习以下操作时,一定一定一定记得备份dump.rdb ...

  9. redis持久存储RDB和AOF的区别及优缺点

    1.前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据.由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能, ...

随机推荐

  1. sql server 只读帐号设置能读取存储过程,view等内容。

    如果设定了某个帐号是只读权限,是无法查看存储过程的,比如你用 sp_helptext '存储过程名' ,这样子会提示权限不足或者存储过程不存在,其实就是没权限, 要再给这个只读帐号用 sa 赋予它查看 ...

  2. OpenGL11-绘制汉字最高效方法(使用Freetype)(代码已更新)

    最新版本,之前的版本有些文件没有打包 视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440 OpenGL本身并没有绘 ...

  3. Root-NFS: Unable to get mountd port number from server, using default

    问题描述: 以前下载到开发板linux内核启动好好地,今天突然启动不了了,到达Root-NFS: Unable to get mountd port number from server, using ...

  4. ZOJ 1203 Swordfish(Prim算法求解MST)

    题目: There exists a world within our world A world beneath what we call cyberspace. A world protected ...

  5. Linux errno详解

    1. 错误码 / errno Linux中系统调用的错误都存储于 errno中,errno由操作系统维护,存储就近发生的错误,即下一次的错误码会覆盖掉上一次的错误. PS: 只有当系统调用或者调用li ...

  6. c#基础学习(0701)之一些简单的方法练习

    一个简单的求数组最大值的方法 //可变参数 int max=GetMaxNumbers(101,30) static int GetMaxNumbers(params int[] pms) { ]; ...

  7. VS中调试查看DataTable和DataSet时未能加载此自定义查看器解决方法

    在网上找了几个方法,感觉不太实用,最后自己找到了问题所在  VS2017中选择调试-选项-常规中的使用托管兼容模式取消勾选.之后就可以了

  8. 使用 ahk 让普通键盘变为Dvorak键盘

    本文告诉大家,如何使用软件做出Dvorak键盘. 在开始说如何做之前,需要告诉大家,什么是Dvorak键盘. Dvorak Simplified Keyboard /ˈdvɔːræk, dəˈvɔː- ...

  9. 边框圆角Css

    .box{ background:grey; //灰色背景 height:50px; //高500像素 width:200px; //宽200像素 border-top-left-radius:15p ...

  10. 数据库导出Excel(转载)

    来源:https://jingyan.baidu.com/article/3065b3b68f2ab7becef8a449.html SQLServer2005或者SQLServer2008.SQLS ...