资讯专栏INFORMATION COLUMN

Redis重写/压缩AOF文件

nicercode / 1405人阅读

摘要:的工作原理和创建快照的工作原理非常相似会创建一个子进程,然后由子进程负责对文件进行重写。因为文件重写也需要用到子进程,所以快照持久化因为创建子进程而导致的性能问题和内存占用问题,在持久化中也同样存在。

AOF持久化缺点:

Redis会不断地将被执行的命令记录到AOF文件里面,所以随着Redis不断运行,AOF文件的体积也会不断增长。在极端情况下,体积不断增大的AOF文件甚至可能会用完硬盘的所有可用空间。

Redis在重启之后需要通过重新执行AOF文件记录的所有写命令来还原数据集,所以如果AOF文件的体积非常大,那么还原操作执行的时间就可能会非常长。

解决办法:

为了解决AOF文件体积不断增大的问题,用户可以向Redis发送BGREWRITEAOF命令,这个命令会通过移除AOF文件中的冗余命令来重写(rewrite)AOF文件,使AOF文件的体积变得尽可能地小。BGREWRITEAOF的工作原理和BGSAVE创建快照的工作原理非常相似:Redis会创建一个子进程,然后由子进程负责对AOF文件进行重写。因为AOF文件重写也需要用到子进程,所以快照持久化因为创建子进程而导致的性能问题和内存占用问题,在AOF持久化中也同样存在。

跟快照持久化可以通过设置save选项来自动执行BGSAVE一样,AOF持久化也可以通过设置auto-aof-rewrite-percentage选项和auto-aof-rewrite-min-size选项来自动执行BGREWRITEAOF。举个例子,假设用户对Redis设置了配置选项auto-aof-rewrite-percentage 100和auto-aof-rewrite-min-size 64mb,并且启动了AOF持久化,那么当AOF文件的体积大于64MB,并且AOF文件的体积比上一次重写之后的体积大了至少一倍(100%)的时候,Redis将执行BGREWRITEAOF命令。如果AOF重写执行得过于频繁的话,用户可以考虑将auto-aof-rewrite-percentage选项的值设置为100以上,这种做法可以让Redis在AOF文件的体积变得更大之后才执行重写操作,不过也会让Redis在启动时还原数据集所需的时间变得更长。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/36481.html

相关文章

  • Redis篇 - 5. redis 持久化之 RDB & AOF

    摘要:持久化实现方式快照对数据某一时间点的完整备份。出故障时会丢失一秒数据刷新策略让系统决定不可控。从而减少磁盘占用量,加快数据恢复速度。根据实际需求进行设定。重写集中管理单机多部署情况下,发生大量可能会内存爆满。规划不当可能会产生等问题。 Redis 持久化实现方式 快照对数据某一时间点的完整备份。例如Linux 快照备份、Redis RDB、MySQL Dump。 日志将数据的所有操...

    voidking 评论0 收藏0
  • Redis持久化

    摘要:的性能很好,需要进行持久化时,主进程会一个子进程出来,然后把持久化的工作交给子进程,自己不会有相关的操作。使用产生子进程进行数据的持久化,如果数据比较大的话可能就会花费点时间,造成停止服务几毫秒。 Redis的持久化 Redis有两种持久化的方式:快照(RDB文件)和追加式文件(AOF文件): RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照。 AOF持久化方式则会...

    snowell 评论0 收藏0
  • Redis持久化存储详解(一)

    摘要:主要是原因根据资料提示,可以能使由于如下原因文本协议的兼容性好前面我们提及到了文件是进行二进制加密,可能不同版本之间会出现不兼容的情况,采用文本协议可以加避免该问题。 为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异...

    liuhh 评论0 收藏0
  • Redis持久化存储详解(一)

    摘要:主要是原因根据资料提示,可以能使由于如下原因文本协议的兼容性好前面我们提及到了文件是进行二进制加密,可能不同版本之间会出现不兼容的情况,采用文本协议可以加避免该问题。 为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异...

    whinc 评论0 收藏0
  • Redis持久化存储详解(一)

    摘要:主要是原因根据资料提示,可以能使由于如下原因文本协议的兼容性好前面我们提及到了文件是进行二进制加密,可能不同版本之间会出现不兼容的情况,采用文本协议可以加避免该问题。 为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异...

    wenshi11019 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<