### 概述
把用戶執行的每個“寫”指令(添加、修改、刪除)都備份到文件中,還原數據的時候就是執行具體寫指令而已。
### 開啟
redis.conf文件下 :
1. appendonly : yes //表示開啟AOF方式
2. appendfilename : 文件名 //指定AOF持久化名稱

### 觸發條件
1. appendfsync always //每次收到寫命令就立即強制寫入磁盤,最慢的,但是保證完全的持久化,不推薦使用 .

2. appendfsync everysec(默認) //默認就是這種,每秒鐘強制寫入磁盤一次,在性能和持久化方面做了很好的折中,推薦 .

3. appendfsync no //完全依賴操作系統,性能最好,持久化沒保證 .


**需要注意的是:即使已經在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指令 .

如:每個命令重寫一次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
~~~

### 二.AOF重寫配置


觸發時機:
以下兩點要同時滿足:
1. 當前aof文件大小大于AOF文件需要的尺寸;
2. (當前AOF文件 - 上一次重寫時文件的大小) / 上一次重寫時文件的大小 > AOF文件增長率;

### 配置

- Redis簡介
- 簡介
- 典型應用場景
- Redis安裝
- 安裝
- redis可執行文件說明
- 三種啟動方法
- Redis常用配置
- API的使用和理解
- 通用命令
- 數據結構和內部編碼
- 單線程
- 數據類型
- 字符串
- 哈希
- 列表
- 集合
- 有序集合
- Redis常用功能
- 慢查詢
- Pipline
- 發布訂閱
- Bitmap
- Hyperloglog
- GEO
- 持久化機制
- 概述
- snapshotting快照方式持久化
- append only file追加方式持久化AOF
- RDB和AOF的抉擇
- 開發運維常見問題
- fork操作
- 子進程外開銷
- AOF追加阻塞
- 單機多實例部署
- Redis復制原理和優化
- 什么是主從復制
- 主從復制配置
- 全量復制和部分復制
- 故障處理
- 開發運維常見問題
- Sentinel
- 主從復制高可用
- 架構說明
- 安裝配置
- 客戶端連接
- 實現原理
- 常見開發運維問題
- 高可用讀寫分離
- 故障轉移client怎么知道新的master地址
- 總結
- Sluster
- 呼喚集群
- 數據分布
- 搭建集群
- 集群通信
- 集群擴容
- 集群縮容
- 客戶端路由
- 故障轉移
- 故障發現
- 故障恢復
- 開發運維常見問題
- 緩存設計與優化
- 緩存收益和成本
- 緩存更新策略
- 緩存粒度控制
- 緩存穿透優化
- 緩存雪崩優化
- 無底洞問題優化
- 熱點key重建優化
- 總結
- 布隆過濾器
- 引出布隆過濾器
- 布隆過濾器基本原理
- 布隆過濾器誤差率
- 本地布隆過濾器
- Redis布隆過濾器
- 分布式布隆過濾器
- 開發規范
- 內存管理
- 開發運維常見坑
- 實戰
- 對文章進行投票
- 數據庫的概念
- 啟動多實例