搜尋
首頁資料庫Redis分享一些好用的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刪除
了解NOSQL:Redis的關鍵特徵了解NOSQL:Redis的關鍵特徵Apr 13, 2025 am 12:17 AM

Redis的關鍵特性包括速度、靈活性和豐富的數據結構支持。 1)速度:Redis作為內存數據庫,讀寫操作幾乎瞬時,適用於緩存和會話管理。 2)靈活性:支持多種數據結構,如字符串、列表、集合等,適用於復雜數據處理。 3)數據結構支持:提供字符串、列表、集合、哈希表等,適合不同業務需求。

REDIS:確定其主要功能REDIS:確定其主要功能Apr 12, 2025 am 12:01 AM

Redis的核心功能是高性能的內存數據存儲和處理系統。 1)高速數據訪問:Redis將數據存儲在內存中,提供微秒級別的讀寫速度。 2)豐富的數據結構:支持字符串、列表、集合等,適應多種應用場景。 3)持久化:通過RDB和AOF方式將數據持久化到磁盤。 4)發布訂閱:可用於消息隊列或實時通信系統。

REDIS:流行數據結構指南REDIS:流行數據結構指南Apr 11, 2025 am 12:04 AM

Redis支持多種數據結構,具體包括:1.字符串(String),適合存儲單一值數據;2.列表(List),適用於隊列和棧;3.集合(Set),用於存儲不重複數據;4.有序集合(SortedSet),適用於排行榜和優先級隊列;5.哈希表(Hash),適合存儲對像或結構化數據。

redis計數器怎麼實現redis計數器怎麼實現Apr 10, 2025 pm 10:21 PM

Redis計數器是一種使用Redis鍵值對存儲來實現計數操作的機制,包含以下步驟:創建計數器鍵、增加計數、減少計數、重置計數和獲取計數。 Redis計數器的優勢包括速度快、高並發、持久性和簡單易用。它可用於用戶訪問計數、實時指標跟踪、遊戲分數和排名以及訂單處理計數等場景。

redis命令行怎麼用redis命令行怎麼用Apr 10, 2025 pm 10:18 PM

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

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 10:12 PM

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

redis集群zset怎麼使用redis集群zset怎麼使用Apr 10, 2025 pm 10:09 PM

Redis 集群中使用 zset:zset 是一種有序集合,將元素與評分關聯。分片策略: a. 哈希分片:根據 zset 鍵的哈希值分佈。 b. 範圍分片:根據元素評分劃分為範圍,並將每個範圍分配給不同的節點。讀寫操作: a. 讀操作:如果 zset 鍵屬於當前節點的分片,則在本地處理;否則,路由到相應的分片。 b. 寫入操作:始終路由到持有 zset 鍵的分片。

See all articles

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

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1

記事本++7.3.1

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用