优化前set s1 1set s1 2set s1 3优化后set s1 3<br data-filtered="filtered">
AOF文件优化原理
AOF的重写是通过子进程实现的,因此,主线程是继续工作的,有可能对新的数据进行修改,有可能会导致数据库的数据和重写之后的数据不一致 。redis通过增加一个AOF重写缓存来解决这个问题,当fork出子进程之后,新的命令不仅会追加到现有的AOF文件中,还会添加一份数据到这个缓存当中 。
重写过程分析(需要保证从写的操作是绝对安全的)
Redis创建新的AOF文件之后,会继续将命令添加到原有的AOF文件中,即使数据库突然宕机了,原有的AOF文件和文件内容也不会有损失 。而当新的AOF文件创建完毕之后,会直接把旧的替换掉,往新的AOF文件中添加命令 。
当子进程在进行重写时,主进程会完成下列工作
- 处理请求,将新的命令继续添加到AOF文件中,同时将命令添加到AOF重写缓存中 。保证数据的一致行,避免出现数据丢失 。
- 当子进程重写完毕之后会向主进程发送一个完成信号,这时主进程会把重写缓存中的内容添加到新的AOF文件中,这样新的AOF文件,数据库,旧的AOF文件的内容就完全一致了 。然后对新的AOF文件改名,覆盖原有的AOF文件 。
推荐阅读
- 读完这篇文章,就基本搞定了Redis数据库
- 彻底理解Redis持久化
- redis各类型数据结构和底层实现源码分析
- 利用openresty+lua+redis 实现封杀频繁恶意访问IP地址
- Redis消息队列发展历程
- 职业教育|深化服务体系,积极探索航空职业教育发展
- 使用Docker搭建Redis-cluster环境
- Redis服务安全加固的说明
- Redis缓存知识问题
- Linux下php安装Redis扩展的方法