目前redis作为比较流行的缓存框架,为开发这提供高效稳定快速的数据缓存方案,但是redis不能无限制的将数据放到内存中,遇到服务器宕机,那么缓存中的所有数据将丢失,那么为了避免这种情况redis提供了两种方式做持久化将数据存储到硬盘,一种是RDB 一种是AOF。
RDB也称为快照,就是当达到一定的条件时将内存中的整个数据全部写到磁盘存储,整个过程redis服务器内部需要将缓存的数据进行格式化处理,压缩最后缓存,这是比较耗时的,同时也会占用服务器内部资源,最重要的是快照不是实时操作,中间有时间间隔,这就意味着如果服务器宕机,需要恢复数据是不完整的。为了解决这个弊端,redis提供了另外一种持久化方式AOF。开启aof需要在配置文件中将appendfile=yes开启,然后重启redis即可开启AOF。AOF本质就是将用户的操作指令记录并保存,如果需要进行数据恢复,则会通过操作指令一步步进行数据还原。
AOF默认有三种模式always everysec,no系统默认是everysec
always 一写指令就备份一次。这样做虽然安全,但是系统性能会降低。不推荐使用
everysec 每一秒中备份一次。不管一秒钟变化了多少key,只备份一次,性能得到一定的保护。推荐使用。
no 会查看当前服务器状态,如果状态良好,就进行备份(随机)。这种备份方式数据是没有保证的。
AOF相对于RDB效率高,而且是异步操作不会阻碍指令的执行,但是AOF也不是百分之百可靠最多会丢失1秒的数据,但相对于RDB已经改进了很多了
网友评论