redis持久化 RDB与AOF

RDB与AOF区别

  • rdb: 基于快照的持久化,速度更快,一般用做备份,主从复制也是依赖于rdb持久化功能
  • aof:以追加的方式记录redis操作日志的文件,可以最大程度的保证redis数据的安全

RDB

前言

  • 前言
  • Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。
  • RDB持久化
  • 基于内存的数据快照
  • 定期执行数据快照
  • 手动触发数据快照

RDB实践

  • 在配置文件中,添加rdb持久化参数
# 新建配置文件redis-6379.conf
touch redis/conf/redis-6379.conf
# 编辑
vim redis/conf/redis-6379.conf

# 写入内容
port 6379         
daemonize yes           
pidfile /data/6379/redis.pid
loglevel notice       
logfile "/data/6379/redis.log"
dir /data/6379                              #定义持久化文件存储位置
protected-mode yes 
dbfilename  dbmp.rdb
save 900 1                            #rdb机制 每900秒 有1个修改记录
save 300 10                       #每300秒        10个修改记录
save 60 10000                     #每60秒内        10000修改记录

# 注意路径问题,不要将备注也复制进去,

注意:如果报存储文件没有,根据你自己写的路径自己创建

  1. 启动redis服务端
redis-server redis-6379.conf
  1. 登录redis设置key
redis-cli -p 6379 -a xxx
 # -p  端口号   -a 设置的密码
# 如果没输入密码,登录之后
auth 密码
  1. 此时检查目录,/data/6379底下没有dbmp.rdb文件
  2. 通过save触发持久化,将数据写入RDB文件
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> save
OK

AOF

前言

  • AOF(append-only log file)
    记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集
    AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。
    优点:最大程序保证数据不丢
    缺点:日志记录非常大

配置

  1. 配置文件
# 新建配置文件redis-6379.conf
touch redis/conf/redis-6379.conf
# 编辑
vim redis/conf/redis-6379.conf
# 参数
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename  dbmp.rdb
requirepass redhat
save 900 1
save 300 10
save 60  10000
appendonly yes
appendfsync everysec

参数解析

appendonly yes
appendfsync  always    总是修改类的操作
             everysec   每秒做一次持久化
             no     依赖于系统自带的缓存大小机制
  1. 启动redis
redis-server redis-6379.conf
  1. 检查redis数据目录/data/6379/是否产生了aof文件
ls /data/6379/
  1. 登录redis-cli,写入数据,实时检查aof文件信息
# 新开一个窗口,观察aof文件信息
tail -f appendonly.aof


# 登录redis-cli
redis-cli -p 6380 -a xxx

# -p  端口号   -a 设置的密码
# 如果没输入密码,登录之后
auth 密码