Redis持久化策略
Redis持久化策略:RDB与AOF
NOsql 即Not Only Sql 不仅仅是sql, 泛指非关系型数据库非关系型数据库, 因为里面存储的数据没有任何关系。其中有一个很重要类型数据库: 缓存数据库。
Redis作为缓存的应用时:关系型和非关系型都使用。Redis优点很突出:内存操作,速度快,适合解决高并发海量的请求。
这里有一个问题,Redis作为缓存的应用时,如果服务器关闭(奔溃等),岂不是所有数据都丢失了吗?
答案是不会,原来 redis有持久化机制, 可以在符合条件的时候将内存中的数据持久化到磁盘上保存; 当服务器再次启动会自动恢复数据。数据持久化可以 防止redis服务器突然崩溃, redis可以重启之后立刻恢复磁盘的数据用于缓存; 这就是redis的持久化机制。如果没有redis持久化机制, 所有缓存数据丢失, 会造成磁盘数据库mysql瞬间压力增大, 有可能导致mysql崩溃
Redis的持久化分为两个策略:RDB策略和AOF策略
RDB策略介绍(快照策略)
Redis DataBase(RDB) , 是redis的默认开启的持久化策略. 在符合持久化条件时会将这一时刻内存所有数据进行持久化到磁盘文件上dump.rdb, 由于持久化的是某一时刻所有内存数据又叫快照策略.
-
rdb策略的优点?
持久化频率低, 所以redis的缓存性能不会受到影响
-
rdb策略的缺点?
由于持久化频率低, 导致数据丢失严重, 数据不安全
AOF(append only file)策略介绍
这个策略默认没有开启, 这个策略是每一秒将一秒内的增删改的命令持久化追加到appendonly.aof文件中。
AOF默认是采用的策略是每秒持久化一次,会导致持久化文件随着时间不断增大,AOF会记录每一个key所有修改操作的过程。
appendfsync no:含义不进行强制持久化,而是交给操作系统与redis自己决定持久化的频率;在aof里面性能最好,但是安全性最不好。
-
AOF策略的优点?
持久化频率高了, 数据安全性高, 数据不易丢失, 最多丢失1秒内的数据
-
AOF缺点?
持久化频率高了, redis的性能会受到影响, 如果持久化频率高会导致cpu的压力大
- RDB和AOF以后到底推荐使用哪一个呢?
久化频率高会导致cpu的压力大
-
RDB和AOF以后到底推荐使用哪一个呢?
如果希望数据安全性高,才开AOF,否则只建议使用RDB,因为AOF会降低redis的性能, 严重影响CPU(cpu超过60%都会选择关闭AOF)。注意AOF很影响redis的性能