Redis持久化 乙個小白,他能逆襲嗎?

2022-09-22 23:45:17 字數 2623 閱讀 9820

?

? ?redis持久化■持久化概述●redis是執行在記憶體中,記憶體中的資料斷電丟失●為了能夠重用redis資料,或者防止系統故障,我們需要將redis中的資料寫入到磁碟空間中,即持久化■持久化分類重點● rdb方式:建立快照的方式獲取某一時刻redis中所有 資料的副本●aof方式:將執行的寫命令寫到檔案的末尾,以日誌的方式來記錄資料的變化rdb:占用資源少,不需花費大量伺服器資源aof:專門開乙個程序,隨時進行資料儲存,讀寫同步進行,——類似增量備份,但是占用更大資源,重啟服務時,要進行同步資料,啟動時間慢,等待時間長。伺服器突然關機,不怕資料丟失。不執行最後一條語句rdb持久化2-1■redis的預設持久化方式■預設檔名dump.rdb■觸發條件●在指定的時間間隔內,執行指定次數的寫操作(配置檔案控制)●執行s**e或者是bgs**e (非同步) 命令●執行flushall命令,清空資料庫所有資料●執行shutdown命令,保證伺服器正常關閉且不丟失任何資料■redis的預設持久化方式■預設檔名dump.rdb■觸發條件,在指定的時間間隔內,執行指定次數的寫操作(配置檔案控制)●執行s**e或者是bgs**e(非同步) 命令執行flushall命令,清空資料庫所有資料●執行shutdown命令,保證伺服器正常關閉且不丟失任何資料shutdown s**e最安全的資料儲存方式●適合大規模的資料恢復●如果業務對資料完整性和一致性要求不高,rdb是很好的選擇●資料的完整性和一致性不高●備份時占用記憶體

rdb啟動方式:s**e指令 ?手動執行一次拍照●dbfilename dump.rdb說明:設定本地資料庫檔名,預設值為dump.rdb經驗:通常設定為dump-埠號.rdb●dir說明:設定儲存.rdb檔案的路徑經驗:通常設定成儲存空間較大的目錄中,目錄名稱data●rdbcompressionyes說明:設定儲存至本地資料庫時是否壓縮資料,預設為yes,採用lzf壓縮經驗:通常預設為開啟狀態,如果設定為no,可以節省cpu執行時間,但會使儲存的檔案變大(巨大)●rdbchecksum yes說明:設定是否進行rdb檔案格式校驗,該校驗過程在寫檔案和讀檔案過程均進行經驗:通常預設為開啟狀態,如果設定為no,可以節約讀寫性過程約10%時間消耗,但是儲存一定的資料損壞風險s**e ? ? ? ?按順序儲存,容易阻塞伺服器bgs**e ? ? 手動啟動後台儲存操作,但是不是立即執行注意: bgs**e命令 是針對s**e阻塞問題做的優化。redis內部所有涉及到rdb操作都採用bgs**e的方式,s**e命令可以放棄使用。s**e second changes作用: 滿足限定時間範圍內key的變化達到指定數量進行持久化引數 second: 監控時間範圍 changes:監控key的變化量●全量複製在主從複製中詳細講解●伺服器執行過程中重啟debug reload●關閉伺服器時指定儲存資料shutdowm s**eaof資料持久化■redis預設不開啟■彌補rdb的不足(資料的不一致性)■採用日誌的形式來記錄每個寫操作,並追加到檔案中■redis重啟會根據日誌檔案的內容將寫指令從前到後執行一次以完成資料的恢復工作

■aof的重寫機制●aof的工作原理是將寫操作追加到檔案中,檔案的冗餘內容會越來越多●當aof檔案的大小超過所設定的閾值時,redis就會對aof檔案的內容壓縮■aof重寫的原理●redis會fork出一條新程序,讀取記憶體中的資料(並沒有讀取舊檔案),並重新寫到-乙個臨時檔案中,最後替換舊的aof檔案aof重寫隨著命令不斷寫入aof,檔案會越來越大,為了解決這個問題,redis引入了 aof重寫機制壓縮檔案體積。aof檔案重寫是將redis程序內的資料轉化為寫命令同步到新aof檔案的過程。簡單說就是將對同一乙個資料的若干個條命令執行結果轉化成最終結果資料對應的指令進行記錄。aof重寫作用●降低磁碟佔用量,提高磁碟利用率●提高持久化效率,降低持久化寫時間,提高io效能●降低資料恢復用時,提高資料恢復效率■aof的重寫配置vim /etc/redis/6379.conf#在日誌進行bgrewriteaof時,如果設定為yes表示新寫操作不進行同步fsync,只是暫存在緩衝區裡,避免造成磁碟i0操作衝突,等重寫完成後在寫入。redis中預設為nono-appendfsync-on-rewrite no#當前aof檔案大小是上次日誌重寫時aof檔案大小兩倍時,發生bgrewriteaof操作auto-aof-rewrite-percentage 100#當前aof檔案執行bgrewriteaof命令的最小值,避免剛開始啟動reids時由於檔案尺寸較小導致頻繁的bgrewriteaofauto-aof-rewrite-min-size 64mb# appendfsync always ? ?每次寫入操作均同步aofappendtsync everysec ? ? 每秒在系統宕機情況下1秒鐘的資料# appendfsync no ? ? ? ? ? 系統控制aof-load-truncated yes

#在日誌進行bgrewriteaof時,如果設定為yes表示新寫操作不進行同步fsync,只是暫存在緩衝區裡,避免造成磁碟i0操作衝突,等重寫完成後在寫入。redis中預設為nono-appendfsync-on-rewrite no ? ?預設是no#當前aof檔案大小是上次日誌重寫時aof檔案大小兩倍時,發生bgrewriteaof操作auto-aof-rewrite-percentage 100#當前aof檔案執行bgrewriteaof命令的最小值,避免剛開始啟動reids時由於檔案尺寸較小導致頻繁的bgrewriteaofauto-aof-rewrite -min-size 64mbaof重寫方式●手動重寫bgrewriteaof●自動重寫auto-aof- rewrite-min-size sizeauto-aof-rewrite-percentage percentage

shell grep命令 乙個小白,他能逆襲嗎?

作為linux中最為常用的三大文字 awk,sed,grep 處理工具之一,掌握好其用法是很有必要的。首先談一下grep命令的常用格式為 grep 選項 模式 檔案 grep家族總共有三個 grep,egrep,fgrep。常用選項 e 開啟擴充套件 extend 的正規表示式。i 忽略大小寫 ig...

shell for迴圈 乙個小白,他能逆襲嗎?

除了 while 迴圈和 until 迴圈,shell 指令碼還提供了 for 迴圈,它更加靈活易用,更加簡潔明瞭。shell?for 迴圈有兩種使用形式,下面我們逐一講解。c語言風格的 for 迴圈 c語言風格的 for 迴圈的用法如下 for exp1 exp2 exp3 do?statemen...

小白也能懂 如何運營乙個內容專題?

之前發了一篇 關於內容專題,這有乙份從 0 到 1 的運營方案 被行外朋友吐槽好像很有用但專業名詞太多看不懂,只適合 還是有相關基礎 的童鞋看。於是衍生出了這一篇文章,旨在希望沒做過內容專題運營或者沒做過運營的朋友,靠著文章也能想象到運營乙個簡單的內容專題大概有什麼樣的畫面。乙個小內容專題,基本會有...