Redis持久化

    技术2024-09-27  55

    目的: 防止数据丢失对数据进行备份(磁盘)

    实现方式:

    直接拷贝内存中的数据保存到磁盘(RDB)记录用户的操作日志(AOF)

    RDB

    save指令进行手动RDB过程
    RDB启动方式 —— save指令相关配置 daemonize yes port 6379 // 设置存储.rdb文件的路径 dir ./data #logfile "logfilr.log" //本地数据库文件名,默认值为 dump.rdb,通常设置为dump-端口号.rdb dbfilename "mydump.rdb" 执行save指令
    bgsave (background save) 指令进行手动RDB过程
    save指令执行时会阻塞redis的进程bgsave会创建子进程去执行备份操作,而不会阻塞redis
    save配置进行自动RDB过程

    配置频率,底层任然使用的bgsave指令

    save 秒 次数

    daemonize yes port 6379 dir ./data #logfile "logfilr.log" dbfilename "mydump.rdb" save 30 1

    AOF(记录操作日志)

    AOF写数据过程
    修改配置文件 daemonize yes port 6379 dir ./data #logfile "logfilr.log" dbfilename "mydump.rdb" save 30 1 appendonly yes //开启AOF持久化功能,默认no appendfilename "append.aof" // AOF持久化文件名 appendfsync everysec // AOF写数据策略,默认为everysec
    AOF写数据三种策略(appendfsync)
    always(每次):每次写入操作均同步到AOF文件中 数据零误差,性能较低,不建议使用。everysec(每秒):每秒将缓冲区中的指令同步到AOF文件中,在系统突然宕机的情况下丢失1秒内的数据 数据准确性较高,性能较高,建议使用,也是默认配置no(系统控制):由操作系统控制每次同步到AOF文件的周期 整体过程不可控
    AOF的重写机制

    目的:去掉没有意义的指令记录

    实现方式:

    手动: bgrewriteaof, 压缩aof文件

    自动:

    auto-aof-rewrite-min-size size auto-aof-rewrite-percentage percent

    自动重写触发比对参数( 运行指令info Persistence获取具体信息 )

    aof_current_size aof_base_size

    自动重写触发条件

    aof_current_size>auto-aof-rewrite-min-size (aof_base_size - aof_current_size)/aof_base_size>=auto-aof-rewrite-percentage
    Processed: 0.010, SQL: 9