1、redis的持久化
为了防止其数据因断电等原因丢失,需要将数据存入硬盘中,这样在断电后也可以访问到数据库当中的数据。这个将内存的数据写入到磁盘中,防止服务器宕机内存数据丢失,就是redis的持久化。
1.1、redis持久化机制
redis提供了两种持久化机制:
- RDB:(默认持久化方式)
- AOF
2、RDB(快照)持久化
RDB:是redis Database的简写。
它按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb为二进制的文件。
生成快照的方式:
客户端:
- save---手动触发
- bgsave--手动触发
服务端:
- 通过配置文件--自动触发
- shutdown
2.1、save触发
该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。具体流程如下:
执行完成后如果存在老的RDB文件,新的就会将其替换掉。
2.2bgsave触发
执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程如下:
bgsave在执行该命令时会fork出一个新的线程,单独执行rdb持久化操作,而不影响其他客户对redis服务的操作。
2.3配置redis.conf自动化RDB操作
2.4RDB优缺点
优点:
- 数据恢复速度快。
- 只有一个dump.rdb文件,方便持久化。
缺点:
- 数据完整性差。RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。
- dump.rdb文件是一个redis中特制的二进制文件,可能会发生版本不兼容问题。
3、AOF持久化
日志追加持久化,当我们执行写操作,会触发一个函数write,会把写操作的命令追加到一个日志文件appendfile中。当服务器启动时会把appendfile中的命令从新执行一遍。默认不开启。
3.1、开启AOF持久化
进入redis.conf进行修改:
- 修改 appendonly yes 开启持久化。
- 修改 appendfilename “appendonly.aof” 指定生成文件名称。
3.2、AOF优缺点
优点:数据完整性高。
缺点:数据恢复慢启动效率低。
思考:
如果rdb和aof都使用,当服务器重启时会加载哪个文件?
先加载AOF的文件【它以数据完整性为主】。