作者:来自 vivo 互联网存储团队- Qiu Xu本文主要先容了 Redis 提供的三大长期化机制,即 AOF 日记、RDB 快照以及混合长期化机制。
2.4 AOF 文件内容
- 可以通过 appendfilename、appenddirname 配置项来指定 AOF 文件名以及文件存放目次。
- 可以通过 appendfsync 配置项来指定 AOF 刷盘计谋,此中不同的配置项值在数据安全性以及服务性能方面的体现都不相同。
- 配置项 no-appendfsync-on-rewrite 表示是否在 AOF 重写或写 RDB 期间,举行 AOF 刷盘。在 AOF 重写和写 RDB 文件期间会产生大量的磁盘 IO 读写操作,如果配置为 no,则表示在此期间可以举行刷盘操作,此时如果需要同步的数据量非常大可能会阻塞 Redis 主线程,降低 Redis 服务性能。因此在生产环境中,如果存在大量并发的写操作则可将该值设置为 yes;如果为大量并发的读操作则可以设置为 no。
- 可以通过 auto-aof-rewrite-percentage、auto-aof-rewrite-min-size 配置项来指定触发 AOF 重写的条件,以防止 AOF 文件过分膨胀,占用大量存储空间。
- 在举行 AOF 长期化期间,可能由于 Redis 服务突然宕机等原因导致写入 AOF 文件的末了一条命令不完整。在 Redis 服务重启并加载 AOF 文件时,配置项 aof-load-truncated 的值决定了 Redis 服务能否重启成功。若值为 yes,则删除不完整的命令,Redis 服务正常启动;若值为 no,则 Redis 服务无法启动。
- 可以通过 aof-use-rdb-preamble 配置项来指定是否开启混合长期化功能。
写回计谋对比:
- Always,同步写回:每个写命令实行完,立马将日记写回磁盘;“同步写回”可以做到根本不丢数据,但是在每一个写命令实行后都会有一个对磁盘的写操作,这不可克制地会影响主线程性能。
- Everysec,每秒写回:每个写命令实行完,只是先把日记写到 AOF 文件的内存缓冲区,每隔一秒把缓冲区中的内容写入磁盘;“每秒写回”采用一秒写回一次的频率,克制了“同步写回”的性能开销,减少了对 Redis 性能的影响,但是如果发生宕机,将丢失一秒内的全部写操作。
- No,操作系统控制的写回:每个写命令实行完,只是先把日记写到 AOF 文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘。由于 Redis 已不再掌握落盘的机遇,因此一旦宕机没有写入 AOF 文件的数据就丢失了。
(1)没有 BGSAVE 命令(RDB 长期化)/ AOF 长期化在实行;2.7 AOF 长期化详细流程
(2)没有 BGREWRITEAOF 在举行;
(3)当前 AOF 文件巨细要大于
`server.aof_rewrite_min_size`(默以为1MB),大概在 `redis.conf` 配置了 `auto-aof-rewrite-min-size` 巨细;
(4)当前 AOF 文件巨细和末了一次重写后的巨细之间的比率大于大概即是指定的增长百分比(在配置文件设置了 `auto-aof-rewrite-percentage` 参数,不设置默以为100%)
(1)AOF 可以更好的掩护数据不丢失,一般 AOF 会每隔1秒,通过一个后台线程实行 fsync 操作,最多丢失 1 秒钟的数据。缺点:
(2)Redis 提供了 AOF 文件的重写机制,因此 AOF 日记文件不会膨胀的很大,并且在重写期间也不会影响客户端的读写。
(3)AOF 文件中保存的是实行的指令,以是这个特性非常得当做劫难性的误操作紧急恢复。
(1)由于 AOF 文件中记录的是写操作的命令,因此对于同一份数据来说,AOF 的日记文件通常要比 RDB 的数据快照文件要大。三、RDB
(2)AOF 开启之后,Redis 服务支持的写 QPS 会比 RDB 支持的写 QPS 低。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |