redis是一个内存式的数据库,数据是保存到内存中的,这也是redis数据库能够处理海量数据,速度快的一个主要的因素。但是内存中的数据加入服务器重启之后,数据库中的数据就丢失了。所以我们需要将内存中的数据保存到硬盘中,从而实现数据的持久化。在redis中有两种方式:快照的方式(snapshotting)和append only file的方式(aof)。
快照方式:快照的方式每隔一定的时间就会将数据以快照的方式存放到二进制文件中,默认的存放的文件的名字为dump.rdb。我们可以通过修改配置文件来设定多长时间有多少个key修改就可以将操作记录到文件中。配置方式如下
vim redis.conf
save 900 10 //在900秒钟如果有10个key有了修改就将操作记录到文件中去
这种方式存在明显的缺陷,因为这种存储的方式是通过时间控制的。如果redis意外宕机的话,就会丢失最后一次备份之前的数据。
aof方式比快照方式有更好的持久性,在使用aof的时候,redis会将每一个写操作都写入到文件中去,当服务器重启或者宕机的时候,下次启动的时候会默认的读取相应的文件中的写操作,从而恢复数据库中的内容。
配置aof
appendonly yes //开启aof的持久化方式
appendfsync always //只要收到写操作就将操作记录到文件中,性能不好,持久化完全保证
appendfsync everysec //每秒钟就行一次写操作的记录,在持久化和性能方面是很好的折中
appendfsync no //依靠OS,性能最好,但是持久化没有保证
一般选择的折中的办法,每一秒钟写入一次。如果对数据进行了修改,我们会生成一个appendonly.aof的文件,里面记录的是对数据库的写操作。可以用来重新建立数据库中的内容的。
持久化就是这些,希望大家能够与我多交流。。。
本文深入探讨Redis数据持久化的两种方式:快照(snapshotting)和AOF(appendonlyfile),解释了它们的工作原理、配置方法及优缺点。重点在于帮助读者理解如何在保证数据完整性和系统稳定性的前提下,灵活运用Redis持久化策略。
1095

被折叠的 条评论
为什么被折叠?



