• Redis持久化


    Redis持久化

    1.单机安装Redis

    首先需要安装Redis所需要的依赖:

    yum install -y gcc tcl
    
    • 1

    将提供的Redis安装包上传到虚拟机的任意目录:

    例如,我放到/SoftWare/redis-6.2.4

    解压缩:

    tar -xvf redis-6.2.4.tar.gz
    
    • 1

    解压后:

    进入redis目录:

    cd redis-6.2.4
    
    • 1

    运行编译命令:

    make && make install
    
    • 1

    如果没有出错,应该就安装成功了。

    然后修改redis.conf文件中的一些配置:

    # 绑定地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问
    bind 0.0.0.0
    # 数据库数量,设置为1
    databases 1
    
    • 1
    • 2
    • 3
    • 4

    启动Redis:

    redis-server redis.conf
    
    • 1

    停止redis服务:

    redis-cli shutdown
    
    • 1

    RDB持久化

    Redis内部有触发RDB的机制,可以在redis.conf文件中找到

    save 5 1 表示 5秒内,如果至少1个key被修改,则执行bgsave,如果save “” 表示禁用RDB

    在这里插入图片描述

    RDB文件名称

    在这里插入图片描述

    是否压缩,建议不开启
    在这里插入图片描述

    RDB方式bgsave的基本流程?

    • fork主进程得到一个子进程,共享内存空间
    • 子进程读取内存数据并写入新的RDB文件
    • 用新RDB文件替换旧的RDB文件。

    AOF

    AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

    AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF:

    先关闭RDB
    在这里插入图片描述

    # 是否开启AOF功能,默认是no

    appendonly yes

    在这里插入图片描述

    # AOF文件的名称

    appendfilename "appendonly.aof"

    AOF的命令记录的频率也可以通过redis.conf文件来配:

    # 表示每执行一次写命令,立即记录到AOF文件

    appendfsync always

    # 写命令执行完先放入AOF缓冲区,然后表示每隔1秒将缓冲区数据写到AOF文件,是默认方案

    appendfsync everysec

    # 写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写回磁盘

    appendfsync no

    在这里插入图片描述

    配置项刷盘时机优点缺点
    Always同步刷盘可靠性高,几乎不丢数据性能影响大
    everysec每秒刷盘性能适中最多丢失1秒数据
    no操作系统控制性能最好可靠性较差,可能丢失大量数据

    因为是记录命令,AOF文件会比RDB文件大的多。而且AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。

    Redis也会在触发阈值时自动去重写AOF文件。阈值也可以在redis.conf中配置:

    # AOF文件比上次文件 增长超过多少百分比则触发重写
     auto-aof-rewrite-percentage 100
     # AOF文件体积最小多大以上才触发重写 
     auto-aof-rewrite-min-size 64mb 
    
    • 1
    • 2
    • 3
    • 4

    RDB和AOF的比较

    RDBAOF
    持久化方式定时对整个内存做快照记录每一次执行的命令
    数据完整性不完整,两次备份之间会丢失相对完整,取决于刷盘策略
    文件大小会有压缩,文件体积小记录命令,文件体积很大
    宕机恢复速度很快
    数据恢复优先级低,因为数据完整性不如AOF高,因为数据完整性更高
    系统资源占用高,大量CPU和内存消耗低,主要是磁盘IO资源 但AOF重写时会占用大量CPU和内存资源
    使用场景可以容忍数分钟的数据丢失,追求更快的启动速度对数据安全性要求较高常见
  • 相关阅读:
    (JavaSE)抽象类和接口
    【现代密码学原理】——数字签名(学习笔记)
    sql创建临时表,获取查询数据后删除临时表,清理空间
    前端老赵一次给你讲透“微前端”架构
    java线程池的关闭
    Java 零基础教程,看完就会,建议收藏
    MySQL基础入门教程(InsCode AI 创作助手)
    成熟ICT测试系统与LabVIEW定制开发的比较
    【Idea】idea、datagrip设置输入法
    设计模式——桥接模式
  • 原文地址:https://blog.csdn.net/qq_57907966/article/details/126657788