当前位置:网站首页>Redis持久化-AOF
Redis持久化-AOF
2022-07-26 05:34:00 【生命不止、战斗不息】
AOF(Append Only File)

appendonly no # 是否以append only模式作为持久化方式,默认使用的是rdb方式持久化,这种方式在许多应用中已经足够用了appendfilename "appendonly.aof" # appendfilename AOF 文件名称appendfsync everysec # appendfsync aof持久化策略的配置# no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快。# always表示每次写入都执行fsync,以保证数据同步到磁盘。# everysec表示每秒执行一次fsync,可能会导致丢失这1s数据。No-appendfsync-on-rewrite #重写时是否可以运用Appendfsync,用默认no即可,保证数据安全性Auto-aof-rewrite-min-size # 设置重写的基准值Auto-aof-rewrite-percentage #设置重写的基准值
- 启动:设置Yes,修改默认的appendonly no,改为yes
- 将有数据的aof文件复制一份保存到对应目录(confifig get dir)
- 恢复:重启redis然后重新加载
- 启动:设置Yes
- 故意破坏 appendonly.aof 文件!
- 修复: redis-check-aof --fix appendonly.aof 进行修复
- 恢复:重启 redis 然后重新加载
Rewrite
- 每修改同步:appendfsync always 同步持久化,每次发生数据变更会被立即记录到磁盘,性能较差但数据完整性比较好
- 每秒同步: appendfsync everysec 异步操作,每秒记录 ,如果一秒内宕机,有数据丢失
- 不同步: appendfsync no 从不同步
- 相同数据集的数据而言,aof 文件要远大于 rdb文件,恢复速度慢于 rdb。
- Aof 运行效率要慢于 rdb,每秒同步策略效率较好,不同步效率和rdb相同。
小总结

总结
- RDB 持久化方式能够在指定的时间间隔内对你的数据进行快照存储
- AOF 持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以Redis 协议追加保存每次写的操作到文件末尾,Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。
- 只做缓存,如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化
- 同时开启两种持久化方式
- 在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。
- RDB 的数据不实时,同时使用两者时服务器重启也只会找AOF文件,那要不要只使用AOF呢?作者建议不要,因为RDB更适合用于备份数据库(AOF在不断变化不好备份),快速重启,而且不会有AOF可能潜在的Bug,留着作为一个万一的手段。
- 性能建议
- 因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留 save 900 1 这条规则。
- 如果Enable AOF ,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了,代价一是带来了持续的IO,二是AOF rewrite 的最后将 rewrite 过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上,默认超过原大小100%大小重写可以改到适当的数值。
- 如果不Enable AOF ,仅靠 Master-Slave Repllcation 实现高可用性也可以,能省掉一大笔IO,也减少了rewrite时带来的系统波动。代价是如果Master/Slave 同时倒掉,会丢失十几分钟的数据,启动脚本也要比较两个 Master/Slave 中的 RDB文件,载入较新的那个,微博就是这种架构。
边栏推荐
- Hack the box - Web requests module detailed Chinese tutorial
- SQL注入
- Common modules in ansible
- Lamp architecture
- FPGA刷题——序列检测
- Application and value of IVR in VoIP telephone system
- Do you really understand fiddler, a necessary tool for testing?
- OD-Paper【1】:Rich feature hierarchies for accurate object detection and semantic segmentation
- LNMP architecture
- Development to testing: a six-year road to automation from scratch
猜你喜欢

Attack and defense world flatscience

Common modules in ansible

高分子物理知识点

TZC 1283: simple sort Bubble Sort

MySQL optimization

真正的科学减肥

Mongondb API usage

FTP experiment and overview

How to understand "array name is essentially an address" from the perspective of memory parsing?
![Bash shortcut key to improve command line efficiency [Full Version]](/img/ec/f0dd2fbfac6853ae60d7cf52d8f3e1.png)
Bash shortcut key to improve command line efficiency [Full Version]
随机推荐
Usage and common problems of SIP softphone registered with SIP account
OD-Paper【1】:Rich feature hierarchies for accurate object detection and semantic segmentation
Unity Profiler
嵌入式通用学习路线整理
数仓搭建-DIM层
调试利器!一款轻量级日志库 log.c
SIP账号注册的SIP软电话的使用和常见问题
mysql如果计算本月变动/本月增幅/同比变动/同比增幅?
Chinese character style transfer --- learn the conversion and generation of one to many programmed Chinese characters through generation confrontation network
轻量级单片机命令行交互项目,全部开源
如何从内存解析的角度理解“数组名实质是一个地址”?
SAP report development steps
SQL注入
flex布局原理及常见的父项元素
Bash shortcut key to improve command line efficiency [Full Version]
How students apply for free idea
Getaverse,走向Web3的远方桥梁
LAMP架构
520 for what? DIY is a high-value RGB clock that girls want to watch
LNMP架构