目錄
最基本的監控指令:INFO指令
資料遷移工具Redis-shake
叢集管理工具CacheCloud
小結
首頁 資料庫 Redis 分享一些好用的Redis維運工具

分享一些好用的Redis維運工具

Dec 07, 2021 am 09:39 AM
redis

這篇文章跟大家分享一些好用的Redis維運工具,看看怎麼進行運作狀態監控、資料遷移、叢集管理,希望對大家有幫助!

分享一些好用的Redis維運工具

我們在應用Redis時,經常會面臨的維運工作,包括Redis的運作狀態監控,資料遷移,主從叢集、切片叢集的部署和運維。接下來,我就從這三個方面,來介紹一些工具給你。我們先來學習下監控Redis即時運作狀態的工具,這些工具都用到了Redis提供的一個監控指令:INFO。 【相關建議:Redis影片教學

最基本的監控指令:INFO指令

##Redis本身提供的INFO指令會傳回豐富的實例執行監控訊息,這個指令是Redis監控工具的基礎

INFO指令在使用時,可以帶一個參數section,這個參數的取值有好幾種,對應的,INFO指令也會回傳不同類型的監控資訊。我把INFO指令的回傳資訊分成5大類,其中,有的類別當中又包含了不同的監控內容,如下表所示:

分享一些好用的Redis維運工具##在監控Redis運行狀態時,INFO指令傳回的結果非常有用。如果你想了解INFO指令的所有參數回傳結果的詳細意義,可以查看Redis

官網

的介紹。這裡,我給你提幾個維運時需要重點關注的參數以及它們的重要回傳結果。 首先,

無論你是運行單一實例或是集群,我建議你專注於stat、commandstat、cpu和memory這四個參數的返回結果

,這裡麵包含了命令的執行情況(例如命令的執行次數和執行時間、命令使用的CPU資源),記憶體資源的使用情況(例如記憶體已使用量、記憶體碎片率),CPU資源使用情況等,這可以幫助我們判斷實例的運作狀態和資源消耗情況。 另外,當你啟用RDB或AOF功能時,你需要專注於下persistence參數的回傳結果,你可以透過它來查看RDB或AOF的執行情況。

如果你在使用主從集群,就要專注於下replication參數的回傳結果,這裡麵包含了主從同步的即時狀態。

不過,INFO指令只是提供了文字形式的監控結果,並沒有視覺化,所以,在實際應用中,我們也可以使用一些第三方開源工具,將INFO指令的回傳結果視覺化。接下來,我要講的Prometheus,就可以透過插件將Redis的統計結果視覺化。

面向Prometheus的Redis-exporter監控

Prometheus

是一套開源的系統監控警報框架。它的核心功能是從被監控系統中拉取監控數據,結合Grafana工具,進行視覺化展示。而且,監控資料可以儲存到時序資料庫中,以便維運人員進行歷史查詢。同時,Prometheus會偵測系統的監控指標是否超過了預設的閾值,一旦超過閾值,Prometheus就會觸發警報。 對於系統的日常維運管理來說,這些功能是非常重要的。而Prometheus已經實現了使用這些功能的工具框架。我們只要能從被監控系統中取得到監控數據,就可以用Prometheus來實現維運監控。

Prometheus剛好提供了插件功能來實現對一個系統的監控,我們把插件稱為exporter,每一個exporter實際上是一個採集監控資料的元件。 exporter採集的資料格式符合Prometheus的要求,Prometheus取得這些資料後,就可以進行展示和保存了。

Redis-exporter

就是用來監控Redis的,它將INFO指令監控到的運作狀態和各種統計資料提供給Prometheus,從而進行視覺化展示和警報設定。目前,Redis-exporter可以支援Redis 2.0至6.0版本,適用範圍比較廣。 除了取得Redis實例的運作狀態,Redis-exporter還可以監控鍵值對的大小和集合類型資料的元素個數,這個可以在執行Redis-exporter時,使用check-keys的命令列選項來實現。

此外,我們可以開發一個Lua腳本,客製化採集所需監控的資料。然後,我們使用scripts命令列選項,讓Redis-exporter運行這個特定的腳本,從而滿足業務層的多樣化監控需求。

最後,我還想再給你分享兩個小工具:redis-statRedis Live。跟Redis-exporter相比,這兩個都是輕量級的監控工具。它們分別是用Ruby和Python開發的,也是將INFO指令提供的實例運行狀態資訊視覺化展示。雖然這兩個工具目前已經很少更新了,不過,如果你想自行開發Redis監控工具,它們都是不錯的參考。

除了監控Redis的運作狀態,還有一個常見的維運任務就是資料遷移。接下來,我們再來學習下資料遷移的工具。

資料遷移工具Redis-shake

有時候,我們需要在不同的實例間遷移資料。目前,比較常用的一個資料遷移工具是Redis-shake,這是阿里雲Redis和MongoDB團隊開發的一個用於Redis資料同步的工具。

Redis-shake的基本運作原理,是先啟動Redis-shake進程,這個進程模擬了一個Redis實例。然後,Redis-shake進程和資料遷出的來源實例進行資料的全量同步。

這個過程和Redis主從實例的全量同步是類似的。

來源實例相當於主庫,Redis-shake相當於從庫,來源實例先把RDB檔案傳送給Redis-shake,Redis-shake會把RDB檔案送到目的實例。接著,來源實例會再把增量指令傳送給Redis-shake,Redis-shake負責把這些增量指令再同步給目的實例。

下面這張圖展示了Redis-shake進行資料遷移的過程:

分享一些好用的Redis維運工具

#Redis-shake的一大優勢,就是支援多種類型的遷移。

首先,它既支援單一實例間的資料遷移,也支援叢集到叢集間的資料遷移

其次,有的Redis切片叢集(例如Codis)會使用proxy接收請求操作,Redis-shake也同樣支援和proxy進行資料遷移。

另外,因為Redis-shake是由阿里雲端團隊開發的,所以,除了支援開源的Redis版本以外,Redis-shake也支援雲端下的Redis實例和雲端上的Redis實例進行遷移,可以幫助我們實現Redis服務上雲端的目標。

在資料遷移後,我們通常需要比較來源實例和目的實例中的資料是否一致。如果有不一致的數據,我們需要把它們找出來,從目的實例中剔除,或者是再次遷移這些不一致的數據。

這裡,我就要再給你介紹一個資料一致性比對的工具了,就是阿里雲端團隊開發的Redis-full-check

Redis-full-check的工作原理很簡單,就是對來源實例和目的實例中的資料進行全量比對,從而完成資料校驗。不過,為了降低資料校驗的比對開銷,Redis-full-check採用了多輪比較的方法。

在第一輪校驗時,Redis-full-check會找出在來源實例上的所有key,然後從來源實例和目的實例中把對應的值也都找出來,進行比對。第一次比對後,redis-full-check會把目的實例中和來源實例不一致的數據,記錄到sqlite資料庫中。

從第二輪校驗開始,Redis-full-check只比較上一輪結束後記錄在資料庫中的不一致的資料。

為了避免對實例的正常請求處理造成影響,Redis-full-check在每一輪比對結束後,會暫停一段時間。隨著Redis-shake增量同步的進行,來源實例和目的實例中的不一致資料也會逐步減少,所以,我們校驗比對的輪數不用很多。

我們可以自己設定比對的輪數。具體的方法是,在執行redis-full-check指令時,把參數comparetimes的值設定為我們想要比對的輪數。

等到所有輪數都比對完成後,資料庫中記錄的資料就是來源實例和目的實例最終的差異結果了。

這裡有個地方需要注意下,Redis-full-check提供了三種比對模式,我們可以透過comparemode參數來設定。 comparemode參數有三種取值,意義如下:

    ##KeyOutline,只比較key值是否相等;
  • ValueOutline,只比較value值的長度是否相等;

############################### #FullValue,比較key值、value長度、value值是否相等。 #########我們在應用Redis-full-check時,可以依照業務對資料一致性程度的要求,選擇對應的比對模式。如果一致性要求高,就把comparemode參數設定為FullValue。 ######好了,最後,我再向你介紹一個用於Redis叢集維運管理的工具CacheCloud。 ###

叢集管理工具CacheCloud

CacheCloud是搜狐開發的一個針對Redis維管理的雲端平台,它實作了主從叢集、哨兵叢集和Redis Cluster的自動部署和管理,使用者可以直接在平台的管理介面上進行操作。

針對常見的叢集運維需求,CacheCloud提供了5個運維操作。

  • 下線實例:關閉實例以及實例相關的監控任務。
  • 上線實例:重新啟動已下線的實例,並進行監控。
  • 新增從節點:在主從叢集中為主節點新增一個從節點。
  • 故障切換:手動完成Redis Cluster主從節點的故障轉移。
  • 設定管理:使用者提交配置修改的工單後,管理員進行審核,並完成​​設定修改。

當然,身為維運管理平台,CacheCloud除了提供維運操作以外,也提供了豐富的監控資訊。

CacheCloud不僅會收集INFO指令提供的實例即時運行狀態信息,進行視覺化展示,而且還會把實例運行狀態資訊保存下來,例如記憶體使用情況、客戶端連接數、鍵值對資料量。這樣一來,當Redis運作發生問題時,維運人員可以查詢已儲存的歷史記錄,並結合當時的運作狀態資訊進行分析。

如果你希望有一個統一平台,把Redis實例管理相關的任務集中託管起來,CacheCloud是一個不錯的工具。

小結

這堂課,我介紹了幾種Redis的維運工具給你。

我們先了解Redis的INFO指令,這個指令是監控工具的基礎,監控工具都會基於INFO指令提供的資訊進行二次加工了。我們也學習了3種用來監控Redis即時運作狀態的維運工具,分別是Redis-exporter、redis-stat和Redis Live。

關於資料遷移,我們既可以使用Redis-shake工具,也可以透過RDB檔案或是AOF檔進行遷移。

在維運Redis時,剛剛講到的多款開源工具,已經可以滿足我們的不少需求了。但是,有時候,不同業務線對Redis維運的需求可能並不一樣,直接使用現成的開源工具可能無法滿足全部需求,在這種情況下,建議你基於開源工具進行二次開發或是自研,從而更好地滿足業務使用需求。

更多程式相關知識,請造訪:程式設計入門! !

以上是分享一些好用的Redis維運工具的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

redis集群模式怎麼搭建 redis集群模式怎麼搭建 Apr 10, 2025 pm 10:15 PM

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

redis指令怎麼用 redis指令怎麼用 Apr 10, 2025 pm 08:45 PM

使用 Redis 指令需要以下步驟:打開 Redis 客戶端。輸入指令(動詞 鍵 值)。提供所需參數(因指令而異)。按 Enter 執行指令。 Redis 返迴響應,指示操作結果(通常為 OK 或 -ERR)。

redis怎麼啟動服務器 redis怎麼啟動服務器 Apr 10, 2025 pm 08:12 PM

啟動 Redis 服務器的步驟包括:根據操作系統安裝 Redis。通過 redis-server(Linux/macOS)或 redis-server.exe(Windows)啟動 Redis 服務。使用 redis-cli ping(Linux/macOS)或 redis-cli.exe ping(Windows)命令檢查服務狀態。使用 Redis 客戶端,如 redis-cli、Python 或 Node.js,訪問服務器。

redis怎麼使用鎖 redis怎麼使用鎖 Apr 10, 2025 pm 08:39 PM

使用Redis進行鎖操作需要通過SETNX命令獲取鎖,然後使用EXPIRE命令設置過期時間。具體步驟為:(1) 使用SETNX命令嘗試設置一個鍵值對;(2) 使用EXPIRE命令為鎖設置過期時間;(3) 當不再需要鎖時,使用DEL命令刪除該鎖。

redis數據怎麼清空 redis數據怎麼清空 Apr 10, 2025 pm 10:06 PM

如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。

redis怎麼讀取隊列 redis怎麼讀取隊列 Apr 10, 2025 pm 10:12 PM

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

redis底層怎麼實現 redis底層怎麼實現 Apr 10, 2025 pm 07:21 PM

Redis 使用哈希表存儲數據,支持字符串、列表、哈希表、集合和有序集合等數據結構。 Redis 通過快照 (RDB) 和追加只寫 (AOF) 機制持久化數據。 Redis 使用主從復制來提高數據可用性。 Redis 使用單線程事件循環處理連接和命令,保證數據原子性和一致性。 Redis 為鍵設置過期時間,並使用 lazy 刪除機制刪除過期鍵。

redis怎麼讀源碼 redis怎麼讀源碼 Apr 10, 2025 pm 08:27 PM

理解 Redis 源碼的最佳方法是逐步進行:熟悉 Redis 基礎知識。選擇一個特定的模塊或功能作為起點。從模塊或功能的入口點開始,逐行查看代碼。通過函數調用鏈查看代碼。熟悉 Redis 使用的底層數據結構。識別 Redis 使用的算法。

See all articles