這篇文章跟大家分享一些好用的Redis維運工具,看看怎麼進行運作狀態監控、資料遷移、叢集管理,希望對大家有幫助!
我們在應用Redis時,經常會面臨的維運工作,包括Redis的運作狀態監控,資料遷移,主從叢集、切片叢集的部署和運維。接下來,我就從這三個方面,來介紹一些工具給你。我們先來學習下監控Redis即時運作狀態的工具,這些工具都用到了Redis提供的一個監控指令:INFO。 【相關建議:Redis影片教學】
最基本的監控指令:INFO指令
##Redis本身提供的INFO指令會傳回豐富的實例執行監控訊息,這個指令是Redis監控工具的基礎。
INFO指令在使用時,可以帶一個參數section,這個參數的取值有好幾種,對應的,INFO指令也會回傳不同類型的監控資訊。我把INFO指令的回傳資訊分成5大類,其中,有的類別當中又包含了不同的監控內容,如下表所示:##在監控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-stat和Redis 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-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值的長度是否相等;
叢集管理工具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中文網其他相關文章!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

記事本++7.3.1
好用且免費的程式碼編輯器

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

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版
中文版,非常好用