一:Redis为什么需要持久化
前置概念:持久化就是将内存中的数据写到磁盘中
1:Redis的数据是存在内存中的,如果没有配置持久化,当Redis服务重启或者宕机就会造成数据丢失,所以需要配置持久化,配置持久化之后数据会被写到磁盘中(写入磁盘中可以1:间隔一定时间内异步写入磁盘即半持久化,也可以2:将更新指令写入aof中即全持久化),当服务重启之后,数据就会被从磁盘中恢复到内存中,从而保证数据的完整性
二:Redis有几种持久化方式
1:Redis有两种持久化方式,分别是RDB和AOF
2:RDB是将数据保存在临时文件中(dump.rdb),持久化数据之后,将临时文件替换上一次的持久化文件,从而达到数据恢复,RDB是间隔一段时间持久化的,在持久化之间,如果Redis服务宕机,会造成数据丢失,所以RDB持久化适用于对数据不太严谨的情况下,此持久化方式默认是开启的
3:AOF是将每次数据更新的指令(查询不会记录)记录下来,在数据恢复时,按照从前到后的顺序将所有指令重新执行一遍,从而达到恢复数据。AOF的优点是可以更高的保持数据恢复的完整性,但AOF的文件比RDB大很多,且恢复速度慢,默认是不开启的
三:RDB和AOF的区别
1:RDB持久化是在指定时间的间隔时间内将数据快照集写到磁盘中,实际的操作是fork一个子线程,将数据写到一个临时文件中,写入成功后,替换上一次的持久化文件,以二进制压缩文件存储
2:AOF持久化是以日志的方式将服务器所处理的数据变更指令记录下来,以文本的方式记录,可以打开文件看到详细的操作记录