zoukankan      html  css  js  c++  java
  • Redis 持久化机制

    Redis的持久化机制分为RDB和AOF

    RDB: Redis DataBase

    AOF: Append Only File

    一、RDB方式

    1、什么是RDB

    RDB: 每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。

    如果宏机重启,那么内存里的数据肯定会没有的,那么再次重启redis后,则会恢复。

    2、备份与恢复

    内存备份 --> 磁盘临时文件

    临时文件 --> 恢复到内存

    3、RDB优劣势

    优势:

         1) 每隔一段时间备份,全量备份

      2) 灾备简单,可以远程传输

      3) 子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除),保证备份数据的完整性

      4) 相对AOF来说,当有更大文件的时候可以快速重启恢复。

    劣势:

         1)  发生故障时,有可能会丢失最后一次的备份数据

       2) 子进程所占用的内存会比父进程一模一样,如会造成CPU负担。

       3) 由于定时全量备份是重量级操作,所以对于实时备份,就无法处理了。

    4、查看redis的配置文件

    cd /usr/local/redis

    vi redis.conf

    1) 备份的快照文件 /usr/local/redis/working 下的dump.rdb

    2) 备份的时机

     默认备份机制

    save 900 1    900秒(15分钟)至少有一次key的修改,则保存一次快照

    save 300 10  300秒(5分钟)至少有10次key的修改,则保存一次快照

    save 60 10000  60秒(1分钟)至少有10000次key的修改,则保存一次快照

    3)保存的时候发生错误则停止写入

    stop-writes-on-bgsave-error yes

    4) 压缩模式默认打开

    rdbcompression yes

    压缩的过程会占用CPU的性能(可忽略),设置为no的话将导致备份的文件较大。

    5)设置备份rdb文件名称

    dbfilename dump.rdb

    6) 设置工作路径

    dir /usr/local/redis/working

    二、AOF

    1、查看配置文件

    cd /usr/local/redis

    vi redis.conf

    1) 默认AOF是关闭的,将no改为yes开启AOF

    appendonly yes

    2) AOF  文件名称

    appendfilename "appendonly.aof"

    3) AOF同步策略

    # appendfsync always  只要有写操作,就同步一次。always策略会比较慢,并且安全的。几乎保证所有的数据是完整的,不会丢失。
    appendfsync everysec 每秒钟同步一次
    # appendfsync no

    配置好之后,重启redis

    /etc/init.d/redis_init_script stop

    /etc/init.d/redis_init_script  start

    此时查看working文件多了一个AOF文件appendonly.aof,大小为0

     4) 验证AOF文件

    先清空redis,写入三个key

     查看appendonly.aof

    *2
    $6
    SELECT
    $1
    0
    *3
    $3
    set
    $4
    name
    $8
    zhangsan
    *3
    $3
    set
    $3
    age
    $2
    20
    *3
    $3
    set
    $3
    sex
    $3
    boy
    ~      

    可以发现刚才的操作,用指令的形式记录了下来。(这里记录了所有写操作,读操作是没有的)

    5) 当子进程正在备份的时候,不要进行同步。(不要把操作放入日志文件里)

    no-appendfsync-on-rewrite no

  • 相关阅读:
    李航统计学习方法(第二版)(六):k 近邻算法实现(kd树(kd tree)方法)
    ActiveMQ的安装和启动
    HTML select autofocus 属性
    macpath (File & Directory Access) – Python 中文开发手册
    Java Bitset类
    Linux zip命令
    HTML DOM Keygen 对象
    tanh (Numerics) – C 中文开发手册
    no-shadow (Rules) – Eslint 中文开发手册
    require-await (Rules) – Eslint 中文开发手册
  • 原文地址:https://www.cnblogs.com/linlf03/p/13234000.html
Copyright © 2011-2022 走看看