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 密码