搜尋
首頁資料庫Redisredis怎麼擴容
redis怎麼擴容Jun 11, 2019 am 11:02 AM

team中的一個同學在其專案中使用了Redis作為緩存,將熱點資料存放在Redis中。為了提升效能,寫Redis時採用了管道的方式,平時使用時,Redis的效能、資源使用都能符合專案需求,但當訪問量增加的時候,Redis的QPS還能滿足要求,但CPU使用率高的時候已經達到90% ,平時只有30% ,眾所周知,Redis是單進程的,只能佔用1個CPU核,跑滿了也就100%,無法利用機器的多核,而當CPU跑到100%時,必然會造成效能瓶頸。怎麼解決?

redis怎麼擴容

推薦:《Redis影片教學

方案一:

首先想到的是,增加Redis伺服器的數量,在客戶端對儲存的key進行hash運算,存入不同的Redis伺服器中,讀取時,也進行相同的hash運算,找到對應的Redis伺服器,可以解決問題,但是不好的地方:

第一,客戶端要改動程式碼;

第二、需要客戶端記住所有的Redis伺服器的位址;

#這個方案可以使用,但能不能不用改動程式碼就能實現擴充呢?

方案二:

搭建一個集群,由於Redis伺服器使用的版本低於3.0,不支援集群,只能透過使用代理,就想到了有名的Redis代理商twemproxy。

twemproxy的效能也是槓槓滴,雖然是代理,但它對存取效能的影響非常小,連Redis作者都推薦它。

twemproxy使用方便,對於一個新手來說,不到一個小時就能學會使用,而且關鍵是不用改動客戶端程式碼,幾乎支援所有的Redis指令和管道操作,只需要改下客戶端的設定檔中設定的Redis的IP和PORT,由原來的Redis的IP和Port改成twemproxy服務的IP和PORT。

客戶端不需要考慮hash的問題,這些twemproxy會做,客戶端就像操作一台Redis。

上面用了「幾乎」這個詞,因為有些指令,例如"keys *"就不支援

很快就部署好了twemproxy和後面跟著的四個Redis機器,壓測發現,後面的四台Redis的CPU使用率降下來了,但新問題來了,twemproxy也是單一進程的!效能瓶頸又跑到twemproxy上來了!

方案三:

對Redis的存取分為寫和讀,類似生產者和消費者, 再仔細分析,發現寫的少,讀的相對多些,這就可以將讀寫分離,寫的往主的寫,讀的從備的讀,遇到的情況恰好是讀和寫是兩個服務,做到讀寫分離通過改下配置信息就可以很簡單的做到,,這樣分散了主Redis的壓力。

這裡對Redis的訪問壓力有好轉,但不是長久之計,比如遇到舉辦活動, 數據量增大時,還是會有性能的風險。

最終採用的方法是綜合方案二和三,如下圖所示:

#這種方法對現有的服務改動最小,可以有效緩解redis壓力的問題

producer端和consumer端的twemproxy所使用的hash演算法要求一致,不然就找不到key了。

如果把方案一也加進來,會比較複雜,暫時用不到。

#

以上是redis怎麼擴容的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Redis不同版本兼容性如何Redis不同版本兼容性如何Mar 04, 2025 pm 05:57 PM

本文解決了Redis版本的兼容性挑戰。 主要版本升級由於命令,數據結構和配置的變化而引起的顯著兼容性風險。 這篇文章強調使用Redis-CLI進行徹底的測試

如何在Redis群集中選擇一個碎片鍵?如何在Redis群集中選擇一個碎片鍵?Mar 17, 2025 pm 06:55 PM

本文討論了在Redis群集中選擇碎片鍵,並強調了它們對性能,可伸縮性和數據分佈的影響。關鍵問題包括確保均勻數據分配,與訪問模式保持一致以及避免常見錯誤l

Redis查看版本有快捷方式嗎Redis查看版本有快捷方式嗎Mar 04, 2025 pm 05:59 PM

本文詳細介紹了檢查Redis服務器版本的方法。 它使用Redis-CLI - Version和Info Server進行比較,檢查配置文件,過程列表和軟件包管理器。 redis-cli中的信息服務器命令被確定為t

Redis如何通過命令行查看版本Redis如何通過命令行查看版本Mar 04, 2025 pm 06:00 PM

本文詳細介紹了通過命令行檢查Redis服務器版本的方法。 主要方法Redis-CLI信息服務器有效地從服務器的輸出中檢索了版本信息,提供了直接可靠的解決方案。 替代a

如何在REDIS中實施緩存無效策略?如何在REDIS中實施緩存無效策略?Mar 17, 2025 pm 06:46 PM

本文討論了在REDIS中實施和管理緩存無效的策略,包括基於時間的到期,事件驅動的方法和版本控制。它還涵蓋了緩存到期的最佳實踐和監視和自動的工具

Redis版本號是什麼樣的Redis版本號是什麼樣的Mar 04, 2025 pm 06:01 PM

本文詳細介紹了Redis版本號,其字符串數據類型以及用於檢查版本的方法(使用Redis-CLI,配置文件或編程方式)。 它還探討了主要版本之間的差異,重點是增強性能

如何將Redis用於工作隊列和背景處理?如何將Redis用於工作隊列和背景處理?Mar 17, 2025 pm 06:51 PM

本文討論了使用REDIS進行工作隊列和背景處理,詳細的設置,作業定義和執行。它涵蓋了原子運營和工作優先級等最佳實踐,並解釋了REDIS如何提高處理效率。

如何在Redis中實施身份驗證和授權?如何在Redis中實施身份驗證和授權?Mar 17, 2025 pm 06:57 PM

本文討論了在REDIS中實施身份驗證和授權,重點是實現身份驗證,使用ACL以及確保REDIS的最佳實踐。它還涵蓋了管理用戶權限和工具以增強重新安全性。

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.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MantisBT

MantisBT

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

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

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

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