首頁  >  文章  >  資料庫  >  為什麼要做Redis分區?有哪些實現方案?

為什麼要做Redis分區?有哪些實現方案?

青灯夜游
青灯夜游轉載
2021-12-20 10:01:422989瀏覽

這篇文章帶大家了解一下Redis分區,介紹為什麼要做Redis分區,Redis分區的實現方案,以及Redis分區的缺點,希望對大家有幫助!

為什麼要做Redis分區?有哪些實現方案?

Redis是單執行緒的,如何提高多核心CPU的利用率?

可以在同一個伺服器部署多個Redis的實例,並把他們當作不同的伺服器來使用,在某些時候,無論如何一個伺服器是不夠的, 所以,如果你想使用多個CPU,你可以考慮分片(shard)。 【相關建議:Redis影片教學

為什麼要做Redis分割區?

分割區可以讓Redis管理更大的內存,Redis將可以使用所有機器的記憶體。如果沒有分區,你最多只能使用一台機器的記憶體。分區使Redis的運算能力透過簡單地增加電腦而成倍提升,Redis的網路頻寬也會隨著電腦和網路卡的增加而成倍增長。

有哪些Redis分割區實作方案?

1、客戶端分區就是在客戶端就已經決定資料會被儲存到哪個redis節點或從哪個redis節點讀取。大多數客戶端已經實現了客戶端分區。

2、代理分區 意味著客戶端將請求傳送給代理,然後代理決定去哪個節點寫資料或讀取資料。代理根據分區規則決定要要求哪些Redis實例,然後根據Redis的回應結果傳回給客戶端。 redis和memcached的一種代理實作就是Twemproxy。

3、查詢路由(Query routing) 的意思是客戶端隨機地請求任一個redis實例,然後由Redis將請求轉送給正確的Redis節點。 Redis Cluster實作了一種混合形式的查詢路由,但並不是直接將請求從一個redis節點轉送到另一個redis節點,而是在客戶端的幫助下直接redirected到正確的redis節點。

Redis分割區有什麼缺點?

1、涉及多個key的操作通常不會被支援。例如你不能對兩個集合求交集,因為他們可能被儲存到不同的Redis實例(實際上這種情況也有辦法,但是不能直接使用交集指令)。

2、同時操作多個key,則不能使用Redis交易。

3、分區使用的粒度是key,不能使用一個非常長的排序key儲存一個資料集(The partitioning granularity is the key, so it is not possible to shard a dataset with a single huge key like a very big sorted set)

4、當使用分割區的時候,資料處理會非常複雜,例如為了備份你必須從不同的Redis實例和主機同時收集RDB / AOF檔。

5、分割時動態擴容或縮容可能非常複雜。 Redis叢集在執行時增加或刪除Redis節點,能做到最大程度對使用者透明地資料再平衡,但其他一些客戶端分割區或代理分割區方法則不支援此特性。然而,有一種預分片的技術也可以較好的解決這個問題。

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

以上是為什麼要做Redis分區?有哪些實現方案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除