redis是一款基于内存的存储系统,掉电后数据将会全部丢失,为此redis支持一定的数据持久化能力,仅是持久化至本地磁盘。
在持久化时,支持全量模式和增量模式;
全量模式即将此时内存中数据做一次快照全部存储与本地磁盘中,由于本地磁盘大小往往远大于内存大小,且新生成的快照信息会覆盖旧的快照信息,因此不会存在什么磁盘溢出的危险。
缺点是每次全量的将内存数据写入至磁盘且redis是一个单线程执行请求的。因此会对吞吐量造成一定的压力(save)
全量写入的两个命令是SAVE/BGSAVE,可有客户端触法,也可配置定时任务触法,也可在redis shutdown时触法,BGSAVE是fork一个子线程,期间不影响redis对外服务的可用性。
增量模式即AOF(apend only file)保存的是数据的“变迁” 也就是记录每次的命令 类似mysql中基于语句的日志记录,优点是只记录执行的语句,每次磁盘操作很短,对写入操作影响小。
随着执行语句的不断增长,对应的aof文件会不断变大,可能会占用大量的磁盘空间,后续的aof操作也会越来越慢,为此可采用全量+增量复合的模式进行优化,原理是设置一个定时任务定时保存内存快照,在快照生成及持久化至磁盘过程中的语句记录至对应的磁盘文件中,定时周期内的语句使用aof记录至相应的aof文件中,这样就能避免磁盘文件不断膨胀的问题。
本文深入探讨了Redis的持久化机制,包括全量模式和增量模式。全量模式通过快照将内存数据保存到磁盘,而增量模式采用AOF记录数据变更。文章还讨论了全量+增量复合模式的优势,旨在帮助读者理解如何有效利用Redis的数据持久化功能。
1069

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



