1.什么是redis持久化
所谓持久化,就是将数据保存到永久性存贮介质上,在特定的时间将保存的数据进行恢复的机制!
2.为什么要进行持久化
应为redis数据是存放在内存中的,一旦断电,数据会丢失,防止数据意外丢失,保证数据是安全的,才进行持久化
3.证明redis持久化的存在
redis为了追求高效的读写速度,默认情况下所有的增删改,都是在内存中进行的,断点以后redis的数据会丢失,丢失的数据是保存在内存的数据。但是我们会发现,在关闭了redis服务之后,再次启动redis服务,之前的key还在!也就是说,redis是有持久化功能的
4.redis持久化的两种方式
RDB(存快照):
RDB启动方式:save命令
Flushall一旦执行完毕,也会进行rdb存贮(此时dump.rdb文件中没有数据,相当于存了个空文件)
正常关闭redis服务(在redis客户端执行shutdown命令,而不是强制关闭)的时候,也会进行rdb存贮
每当执行save命令的时候,都会立即进行一次快照保存!就是把运行时的redis服务内存中的所有K-V存贮起来!!!
save指令相关配置:
rdb数据恢复时机:redis启动时
save持久化的缺点
针对于save命令的缺点,需要使用bgsave命令来在后台进行rdb数据快照备份。
bgsave的rdb启动方式:自动执行
AOF(存日志)
AOF持久化:以独立日志的方式记录每次写命令(也就是记录数据产生的过程),重启时再重新执行AOF文件中所有的命令,达到数据恢复的目的。
AOF写数据的三种策略:
always 每次写入操作均同步到AOF文件中,数据零误差,性能较低
everysec 每秒同步到AOF中,数据准确性较高,性能较高,最多丢失一秒数据
no 由系统控制何时将命令同步到AOF文件,整个过程不可控
AOF功能开启