目录
什么是持久化: 把内存中的数据保存到磁盘的过程。 防止数据丢失。
redis持久化的方式:
①:RDB 快照模式: 每个一段时间对redis内存中的数据进行拍照存储。
②: AOF 日志追加模式:把每个写命令通过write函数追加到日志文件中。
1. RDB快照模式
每隔一段时间对redis内存中的数据进行拍照存储。它是redis默认的持久化方式。
*优点: 数据恢复速度快。
*缺点: 可能会出现丢失最后一段时间的数据,数据完整性比较差。
RDB持久化方式的触发机制有两种方式:
① 手动触发
save或bgsave命令:----持久化到磁盘中并且名字叫dump.rdb
save和bgsave的区别:
save :
该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。
执行完成后如果存在老的RDB文件,就会用新的替代掉旧的。我们的客户端可能都是几万或者是几十万,这种方式显然不可取。
bgsave:
执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程如下:
② 自动触发
修改redis的配置文件【底层使用的还是bgsave】
2. AOF持久化
把每个写命令通过write函数追加到日志文件中。当redis启动时会读取日志文件中的命令,并把这些命令由上到下执行一遍。
优点: 数据完整性好。
缺点: 数据恢复慢。
默认redis没有开启aof模式。如果需要开启需要修改配置文件 redis.conf
# 需要改为yes 开启aof模式
appendonly yes# 默认aof的日志文件名为appendonly.aof
appendfilename "appendonly.aof"# 默认aof文件存放的目录名
appenddirname "appendonlydir"# 触发的机制。always一直触发 everysec:每秒触发 no:如果开启aof那么就不能设置为no
appendfsync always
#appendfsync everysec
# appendfsync no
查看
答疑解惑:如果rdb和aof都使用,当服务器重启时会加载哪个文件?
先加载AOF的文件【它以数据完整性为主】。