Redis的持久化
概述
Redis的高性能是由于它所有数据都存储在内存中,为了能让Redis在重启之后仍然保证数据不丢失,那么就需要将数据从内存中同步到硬盘上,这个过程称为持久化操作,Redis的持久化有两种方式,一种叫RDB方式,另一种是AOF方式,我们可以选择其一使用,也可以两者结合。(需要手动配置)
持久化使用的方式
-
RDB持久化
-
默认支持,不需要配置。
-
在指定的时间间隔内,将内存中的数据集快照写入到磁盘)
-
-
AOF持久化
- 将以日志的方式记录服务器所处理的每一个操作,在Redis启动之初,它会读取该文件,来重新构建我们的数据库,这样保证我们启动后数据中的数据是完整的。
-
无持久化
- 通过配置来禁用Redis的服务器的一个持久化的功能,这样我们就可以认为Redis是缓存的一个机制了。
-
同时使用RDB和AOF
RDB的方式
优势:
-
利于文件备份
-
非常轻松的将一个单独的文件压缩后转移到其他的存储介质中
-
性能最大化(如果数据集很大,RDB启动效率会更高)
劣势:
-
会出现一些宕机的情况(数据会丢失)
-
如果数据集非常大,可能会导致服务器停止几毫秒甚至1秒
AOF的方式
优势:
-
带来更高的数据安全性。
- Redis中提供了三种同步策略:
1. 每秒同步(异步完成,效率高,但是一旦系统宕机,这1s内修改的数据丢失)
2. 每修改同步(同步持久化,每一次数据发生变化都会被记到磁盘中,效率最低,但是最安全)
3. 不同步
- Redis中提供了三种同步策略:
-
对于日志文件的写入采用append模式(追加),即使写入过程中出现了宕机现象,也不会破坏日志文件中已经存在的内容;如果本次操作只是写入了一半数据就出现了系统崩溃,也没关系Redis下一次启动之前可以通过一个工具解决数据一致性的问题。
-
如果日志过大,Redis可以自动启动重写机制。
-
AOF包含一个格式非常清晰、易于理解的日志文件,用于记录所有的修改操作。我们也可以通过这个文件,完成数据的重建。
劣势:
-
对于相同数量的数据集而言,AOF比RDB文件大一点。
-
根据同步策略的不同,AOF运行效率比RDB低。