鶴壁網站設計東莞網站推廣企業(yè)
redis運維核心: aof日志(全持久化 增量) 、 rdb(半持久化/全量備份) 、 鍵淘汰策略 、 高可用
1、Redis是基于內存的,一旦Redis重啟/退出/故障,內存的數據將會全部丟失。故而有了持久化。
2、持久化:將內存中的數據存于磁盤中,有兩種方式: RDB快照 與 AOF日志
3、Redis服務器在啟動的時候,如果發(fā)現有RDB文件,就會自動載入RDB文件(不需要人工干預) 服務器在載入RDB文件期間,會處于阻塞狀態(tài),直到載入工作完成。
4、如果設置了 AOF 持久化并且 AOF 文件存在,則 Redis 優(yōu)先選擇加載 AOF 文件進行恢復。這意味著 Redis 將使用 AOF 文件重建數據庫,而忽略 RDB 文件。
一、RDB(快照持久化)
1、在指定的時間間隔內生成一個包含 Redis 數據快照的二進制文件。該文件包含了數據庫中所有數據的副本,包括鍵值對、過期時間等信息。
也可以手動執(zhí)行,也可以根據服務器配置定期執(zhí)行。
手動生成RDB文件: save 或 bgsave
6379> save :服務器不能接收任何請求,直到RDB文件創(chuàng)建完畢為止.
6379> bgsave :會開啟一個線程,由線程來創(chuàng)建RDB文件,服務器進程可以繼續(xù)接收請求。
root@02d2e002309c:/data# redis-cli INFO Persistence|grep -iw rdb_last_bgsave_status //檢查bgsave是否執(zhí)行完
rdb_last_bgsave_status:ok //OK 表示已經bgsave完畢
3、Redis可以通過這個文件還原數據庫的數據。
關閉服務 > rdb文件至目錄中 > 啟動服務 (Redis 在還原期間會阻塞,并且無法響應其他命令請求。)
二、AOF日志(append-only-file)
AOF 當Redis服務器執(zhí)行寫命令的時候,將執(zhí)行的寫命令保存到AOF文件中。
需要定期減小Redis AOF 文件的體積時,
使用 :CONFIG REWRITE 或 BGREWRITEAOF 命令來手動減小文件
CLI 6379> CONFIG REWRITE //會立即觸發(fā) AOF Rewriting 進程,并且會阻塞其他客戶端請求,直到重寫過程完成。
或 CLI 6379> BGREWRITEAOF // 命令來執(zhí)行 AOF Rewriting。 會在后臺異步啟動 AOF Rewriting 進程,不會阻塞其他客
戶端請求。
2、再使用redis-cli INFO |grep -iwE aof_rewrite_in_progress 命令來查看進度,1表示進行中,0表示已完成
root@02d2e002309c:/data# redis-cli INFO |grep -iwE aof_rewrite_in_progress
aof_rewrite_in_progress:0
三、RDB與 AOF配置
RDB //save命令會進程阻塞 時間 修改次數 增量快照 save僅對rdb持久化有用
save 900 1 //最近 900 秒(15 分鐘)內至少有一個鍵被修改時,執(zhí)行一次保存操作。save 300 10 //最近 300 秒(5 分鐘)內至少有 10 個鍵被修改時,執(zhí)行一次保存操作。save 60 10000 //最近 60 秒內至少有 10000 個鍵被修改時,執(zhí)行一次保存操作。stop-writes-on-bgsave-error yes //當啟用了RDB且最后一次后臺保存數據失敗,Redis是否停止接收數據rdbcompression yes //對于存儲到磁盤中的快照,可以設置是否進行壓縮存儲。(LZF算法壓縮,會消耗cpu)rdbchecksum yes //是否使用CRC64算法來進行數據校驗,會消耗一定的資源dbfilename dump.rdb //文件名dir ./ //路徑(不帶文件名)
AOF
appendonly no //是否打開 aof日志功能
no-appendfsync-on-rewrite yes //正在導出rdb快照的時候不要寫aof
appendfsync always //設置 AOF 文件同步策略, always / everysec / no// always,默認,表示每個寫命令都會立即被同步到磁盤,//everysec 每秒// no 并不主動觸發(fā)將數據同步到磁盤。而是由操作系統(tǒng)決定何時將緩沖區(qū)中的數據刷新到磁盤。易丟失數據
auto-aof-rewrite-percentage 100 // 設置 AOF 重寫的觸發(fā)百分比,默認為 100,表示當 AOF 文件大小超過上一次重寫后大小的 100% 時觸發(fā)重寫。
auto-aof-rewrite-min-size 128MB // 設置 AOF 重寫的最小文件大小,默認為 64MB,只有當 AOF 文件大小超過該值時才會觸發(fā)重寫。
三、Redis 中鍵淘汰策略
maxmemory-policy:該參數用于設置鍵淘汰策略??梢允褂靡韵轮抵?#xff1a;
maxmemory-policy設置 | 說明 |
---|---|
maxmemory-policy volatile-lru | 從 已設置過期時間 的數據集中挑選 最近最少使用 的鍵進行淘汰。 |
maxmemory-policy volatile-ttl | 從 已設置過期時間 的數據集中挑選 剩余過期時間最短 的鍵進行淘汰。 |
maxmemory-policy volatile-random | 從 已設置過期時間 的數據集中 隨機選擇 鍵進行淘汰。 |
maxmemory-policy volatile-lfu | 從 已設置過期時間 的數據集中 選擇最不經常使用 的鍵策略。 |
maxmemory-policy allkeys-lru | 從 所有數據集中 挑選 最近最少使用 的鍵進行淘汰。 |
maxmemory-policy allkeys-lfu | 從 所有數據集中 挑選 最不經常使用 的鍵策略淘汰。 |
maxmemory-policy allkeys-random | 從 所有數據集中 隨機選擇 鍵進行淘汰。 |
maxmemory-policy noeviction | 禁止淘汰 策略,當內存不足時,寫入操作會報錯。 |
maxmemory-policy allkeys-lfu|volatile-ttl | 組合策略: 首先按照 LFU 策略淘汰最不經常使用的所有鍵,然后再通過過期時間淘汰帶有過期時間的鍵。 |
maxmemory-samples 10 | 設置檢查鍵的樣本數量,默認值為 5。樣本數量越多,淘汰策略的準確性越高。 |
注:
lru 最近最少使用
lfu 最不經常使用
random 隨機選擇
noeviction 禁止