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

    我们都知道Redis是个内存数据库,所有的数据都存储在内存中。一旦服务器上Redis进程退出,数据库中的数据就会丢失。这个时候我们就要对数据做持久化了,持久化简单的理解就是将内存中的数据做个备份。Redis的持久化有两种方法,即RDB持久化和AOF持久化。可以通过修改 redis.conf 来进行配置

    redis是如何存储数据的,看图做理解

    RDB持久化

    RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式.RDB配置方式
    默认情况下,是快照RDB的持久化方式,将内存中的数据以快照的方式写入二进制文件中,默认的文件名是dump.rdb
    redis.conf默认配置:

    save 900 1
    save 300 10
    save 60 10000

     配置含义: 900秒内,如果超过1个key被修改,则发起快照保存 300秒内,如果超过10个key被修改,则发起快照保存 60秒内,如果1万个key被修改,则发起快照保存 默认配置不方便看效果,可将快照频率设大一点,在redis.conf中增加一行:

    save 10 1


    保存后,启动redis服务端和客户端。在客户端输入命令:

    输入完,发现dump.rdb文件的修改日期变了,并且redis服务端增加了保存日志

    接下来,重启redis服务端和客户端,看数据是否真的持久化了:


    到这里,说明使用RDB快照持久化成功了。自己试试
    如何关闭 rdb 模式

    save ""

    # save 900 1  
    # save xxx
    # save 60 10000


    RDB缺点

    因为是特定条件下进行一次持久化(每隔一段时间),就可能会导致一旦redis崩溃,再次回复时,可能会导致部分数据丢失。

    注:如果设置的备份时间间隔较短,比较耗服务器性能,如果设置
    的备份时间间隔较长,又可能会导致数据恢复时部分数据丢失。

    AOF持久化设置

    先把命令追加到操作日志的尾部,保存所有的历史操作。

    1、相比于RDB持久化方案的优点:

    (1)数据非常完整,故障恢复丢失数据少

    (2)可对历史操作进行处理

    2、如何开启AOF持久化模式

    将redis.conf 配置文件中的appendonly 参数改为yes 后,则redis开始启动AOF数据持久化模式

    设置AOF同步的方式,这里设置的默认的每秒同步一次

    3、开启AOF同步模式后,备份文件是这样的

    从上面可以看出,它记录了从我开启AOF后的所有操作命令

    4、缺点

    (1)因为AOF模式要把每一步redis命令都记录下来,所以就导致文件的体积会很大

    (2)而且会导致速度低于RDB,并且恢复速度慢

    RDB模式和AOF模式的恢复

    Redis崩溃后,重启redis会自动找备份恢复文件,下图大致描述了redis重启后的过程。

    总结:

    在实际应用中,根据场景不同,选择的方式也不尽相同,各有优缺点。RDB的快照方式相比于AOF的逐步记录模式要好一些。至于RDB丢数据的风险,我们完全可以通过控制备份的时间间隔来避免这个问题。当然,也是可以两种方式同时使用的,只是大多不会这么做。

  • 相关阅读:
    Spring Cloud Hystrix Dashboard的使用 5.1.3
    Spring Cloud Hystrix 服务容错保护 5.1
    Spring Cloud Ribbon 客户端负载均衡 4.3
    Spring Cloud 如何实现服务间的调用 4.2.3
    hadoop3.1集成yarn ha
    hadoop3.1 hdfs的api使用
    hadoop3.1 ha高可用部署
    hadoop3.1 分布式集群部署
    hadoop3.1伪分布式部署
    KVM(八)使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机
  • 原文地址:https://www.cnblogs.com/myJuly/p/13587799.html
Copyright © 2011-2022 走看看