• redis持久化(RDB)


    1.什么是持久化

    将内存中的数据写入到磁盘,永久保存
    

    2.持久化的模式

    1.RDB模式
    2.AOF模式
    

    3.RDB模式

    可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)
    

    1.RDB工作模式

    1.默认情况下,Redis保存数据集快照到磁盘,名为dump.rdb的二进制文件。你可以设置让Redis在N秒内至少有M次数据集改动时保存数据集,或者你也可以手动调用SAVE或者BGSAVE命令。
    
    2.在上文中我们已经在配置文件中做过对应的配置:
    例如,这个配置会让Redis在每个60秒内至少有1000次键改动时自动转储数据集到磁盘:
    save 60 1000
    
    3.当 Redis 需要保存 dump.rdb 文件时,服务器执行以下操作:
    Redis 调用 fork() ,同时拥有父进程和子进程。
    子进程将数据集写入到一个临时的 RDB 文件中。当子进程完成对新 RDB 文件的写入时, Redis 用新RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。
    
    4.这种方式使得 Redis 可以从写时复制机制中获益。
    

    2.配置RDB持久化

    #编辑配置文件
    [root@db01 ~]# vim /service/redis/6379/redis.conf 
    bind 172.16.1.51 127.0.0.1
    port 6379
    daemonize yes
    pidfile /service/redis/6379/redis_6379.pid
    loglevel notice
    logfile /service/redis/6379/redis_6379.log
    #设置redis密码
    requirepass 123
    #持久化数据文件存储位置
    dir /etc/redis/6379
    #rdb持久化数据文件名
    dbfilename dump.rdb
    #900秒(15分钟)内有1个更改
    save 900 1
    #300秒(5分钟)内有10个更改
    save 300 10
    #60秒(1分钟)内有10000个更改
    save 60 10000
    

    3.RDB持久化优点

    1.RDB是一种表示某个即时点的Redis数据的紧凑文件。RDB文件适合用于备份。例如,你可能想要每小时归档最近24小时的RDB文件,每天保存近30天的RDB快照。这允许你很容易的恢复不同版本的数据集以容灾。
    2.RDB非常适合于灾难恢复,作为一个紧凑的单一文件,可以被传输到远程的数据中心。
    3.RDB最大化了Redis的性能,因为Redis父进程持久化时唯一需要做的是启动(fork)一个子进程,由子进程完成所有剩余工作。父进程实例不需要执行像磁盘IO这样的操作。
    4.RDB在重启保存了大数据集的实例时比AOF要快。
    

    4.RDB持久化缺点

    1.当你需要在Redis停止工作(例如停电)时最小化数据丢失,RDB可能不太好。你可以配置不同的保存点(save point)来保存RDB文件(例如,至少5分钟和对数据集100次写之后,但是你可以有多个保存点)。然而,你通常每隔5分钟或更久创建一个RDB快照,所以一旦Redis因为任何原因没有正确关闭而停止工作,你就得做好最近几分钟数据丢失的准备了。
    2.RDB需要经常调用fork()子进程来持久化到磁盘。如果数据集很大的话,fork()比较耗时,结果就是,当数据集非常大并且CPU性能不够强大的话,Redis会停止服务客户端几毫秒甚至一秒。AOF也需要fork(),但是你可以调整多久频率重写日志而不会有损(trade-off)持久性(durability)。
    

    5.RDB模式优缺点总结

    1.优点:速度快,适合于用作备份,主从复制也是基于RDB持久化功能实现的。
    2.缺点:会有数据丢失、导致服务停止几秒
    

    3.使用RDB文件(注意)

    1.先停止redis
    2.将rdb文件放到指定目录下
    3.启动redis
    
  • 相关阅读:
    JAVA笔记整理-数组
    JAVA笔记整理-流程控制-关键字 break、continue 、return的区别
    JAVA笔记整理-流程控制-循环
    Razor语法和Razor引擎大全
    MVC中几种常用ActionResult
    DataInputStream&DataOutputStream---操作基本类型值的流
    PipedOutputStream&PipedInputStream---管道流
    RandomAccessFile--随机访问文件
    ObjectOutputStream&ObjectInputStream--对象流
    SequenceInputStream--序列流
  • 原文地址:https://www.cnblogs.com/Applogize/p/13448990.html
Copyright © 2020-2023  润新知