ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 概述 把用户执行的每个“写”指令(添加、修改、删除)都备份到文件中,还原数据的时候就是执行具体写指令而已。 ### 开启 redis.conf文件下 : 1. appendonly : yes //表示开启AOF方式 2. appendfilename : 文件名 //指定AOF持久化名称 ![](https://box.kancloud.cn/d4966738300ca5f6b708b4e7e03259d4_879x109.png) ### 触发条件 1. appendfsync always //每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用 . ![](https://img.kancloud.cn/e2/3a/e23a5ffc8edd6c7f3d3712109aebf942_3144x1278.png) 2. appendfsync everysec(默认) //默认就是这种,每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐 . ![](https://img.kancloud.cn/ee/1a/ee1a26d896b98fec08c36419732af369_3070x848.png) 3. appendfsync no //完全依赖操作系统,性能最好,持久化没保证 . ![](https://img.kancloud.cn/46/a7/46a7d99c074dede0267fdc9f17b449ff_3068x808.png) ![](https://img.kancloud.cn/fc/ba/fcba8ec2138d5bda19f4be019c932d18_2868x948.png) **需要注意的是:即使已经在redis.conf文件中把appendonly 从no改为了yes,把服务器重启了的情况也没有appendonly.aof文件时,必须要执行** ~~~ redis-cli config set appendonly yes ~~~ ~~~ redis-cli config set save “” ~~~ **这两个命令后才会在安装目录下出现appendonly.aof文件** appendonly.aof文件存储的就是我们输入的redis命令 . ~~~ *2 $6 SELECT $1 0 *3 $3 SET $1 a $1 a *3 $3 SET $6 gender $4 male ~~~ ### AOF文件的重写 可以把多个incr指令换为一个set指令 . ![](https://img.kancloud.cn/9f/3d/9f3d932b30931fdc28cad3dce36f7aea_2080x1388.png) 如:每个命令重写一次aof,如果某个key操作100次,产生100行记录,aof文件会很大,怎么解决? 比如,当执行多次incr number操作,aof 文件中会保存多次incr number的命令。这样会增大aof文件容量,我们可以对aof文件重写,把里面重复的命令压缩成一条命令。 就比如执行10次incr number 压缩成set number 11 . ### AOF重写优点 1. 减少磁盘占用量; 2. 加速恢复速度; ### 一.执行重写的命令 这里的重写是将内存中的数据抽象成重写的命令,而不是真的把之前的命令重新执行一次. 执行重写的命令可以在登录状态,也可以在未登录状态 . ~~~ 登录状态 : bgrewriteaof ~~~ ~~~ 未登录状态 : redis-cli -a 密码 bgrewriteaof ~~~ ![](https://img.kancloud.cn/06/7b/067b7fab49014f77c6537d4d5c3303c8_2934x1286.png) ### 二.AOF重写配置 ![](https://img.kancloud.cn/80/56/80560c95fff959b6dcea735556cdffd0_2170x350.png) ![](https://img.kancloud.cn/3f/d8/3fd82a7a7d2271be5b29a1507aa76afb_2178x348.png) 触发时机: 以下两点要同时满足: 1. 当前aof文件大小大于AOF文件需要的尺寸; 2. (当前AOF文件 - 上一次重写时文件的大小) / 上一次重写时文件的大小 > AOF文件增长率; ![](https://img.kancloud.cn/2f/03/2f031ca6834cdba1fba0ba2f05f891ed_1162x1594.png) ### 配置 ![](https://img.kancloud.cn/0f/77/0f770fa3abffa383db2d3f92d3e196d8_2242x772.png)