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修改记录
# 注意路径问题,不要将备注也复制进去,
注意:如果报存储文件没有,根据你自己写的路径自己创建
- 启动redis服务端
redis-server redis-6379.conf
- 登录redis设置key
redis-cli -p 6379 -a xxx
# -p 端口号 -a 设置的密码
# 如果没输入密码,登录之后
auth 密码
- 此时检查目录,/data/6379底下没有dbmp.rdb文件
- 通过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协议的格式保存,新命令追加到文件末尾。
优点:最大程序保证数据不丢
缺点:日志记录非常大
配置
- 配置文件
# 新建配置文件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 依赖于系统自带的缓存大小机制
- 启动redis
redis-server redis-6379.conf
- 检查redis数据目录/data/6379/是否产生了aof文件
ls /data/6379/
- 登录redis-cli,写入数据,实时检查aof文件信息
# 新开一个窗口,观察aof文件信息
tail -f appendonly.aof
# 登录redis-cli
redis-cli -p 6380 -a xxx
# -p 端口号 -a 设置的密码
# 如果没输入密码,登录之后
auth 密码