日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Redis分區(qū)技術(shù)詳解
Redis 分區(qū)技術(shù)(又稱 Redis Partition)指的是將 Redis 中的數(shù)據(jù)進(jìn)行拆分,然后把拆分后的數(shù)據(jù)分散到多個(gè)不同的 Redis 實(shí)例(即服務(wù)器)中,每個(gè)實(shí)例僅存儲(chǔ)數(shù)據(jù)集的某一部分(一個(gè)子集),我們把這個(gè)過(guò)程稱之為 Redis 分區(qū)操作。

創(chuàng)新互聯(lián) - 四川電信機(jī)房托管,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽(yáng)服務(wù)器托管,德陽(yáng)服務(wù)器托管,遂寧服務(wù)器托管,綿陽(yáng)服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),四川電信機(jī)房托管,西南服務(wù)器托管,四川/成都大帶寬,機(jī)柜大帶寬,四川老牌IDC服務(wù)商

Redis 實(shí)例指的是一臺(tái)安裝了 Redis 服務(wù)器的計(jì)算機(jī)。

分區(qū)(Partition)不僅是 Redis 中的概念,幾乎所有數(shù)據(jù)庫(kù)管理系統(tǒng)都會(huì)涉及到“分區(qū)”的應(yīng)用。因此本節(jié)重點(diǎn)介紹有關(guān)分區(qū)的知識(shí)。

分區(qū)的優(yōu)勢(shì)

Redis 分區(qū)技術(shù)有兩個(gè)方面的優(yōu)勢(shì),一是提升服務(wù)器的性能,二是提高了服務(wù)器的數(shù)據(jù)存儲(chǔ)能力。

一方面,單臺(tái)機(jī)器的 Redis 服務(wù)器,其網(wǎng)絡(luò) IO 能力和計(jì)算資源都是非常有限的,但是如果我們將請(qǐng)求分散到多臺(tái)機(jī)器上,那么就能充分利用多臺(tái)計(jì)算機(jī)的算力和網(wǎng)絡(luò)帶寬,從而整體上提升 Redis 服務(wù)器的性能。另一方面,隨著存儲(chǔ)數(shù)據(jù)的不斷增加,單臺(tái)機(jī)器的存儲(chǔ)容量會(huì)達(dá)到極限,若將數(shù)據(jù)分散存儲(chǔ)到多臺(tái) Redis 服務(wù)器上,其存儲(chǔ)能力也將得到大幅度提升。

注意,Redis 分區(qū)技術(shù)可以利用多臺(tái)計(jì)算機(jī)的內(nèi)存總和,從而創(chuàng)建出大型的 Redis 數(shù)據(jù)庫(kù)。

分區(qū)常用方法

分區(qū)技術(shù)有兩種常用方法,分別是“范圍分區(qū)”和“哈希分區(qū)”。

1) 范圍分區(qū)

范圍分區(qū)是最簡(jiǎn)單、最有效的分區(qū)方法之一。所謂范圍分區(qū)指的是將特定范圍的 key 映射到指定的 Redis 實(shí)例上。key 的命名格式如下:

object_name:

比如:user:1、user:2 ...用來(lái)表示不同 id  的用戶。下面通過(guò)一個(gè)示例了解范圍分區(qū)的具體流程:

假設(shè)現(xiàn)在共有 3000 個(gè)用戶,您可以把 id 從 0 到 1000 的用戶映射到實(shí)例 R0 上,id 從 1001 到 2000 的用戶映射到實(shí)例 R1 上,以此類推,將 id 從 2001 到 3000 的用戶映射到實(shí)例 R2 上。

范圍分區(qū)不僅簡(jiǎn)單,而且實(shí)用,適合許多的特定場(chǎng)景。但當(dāng)存儲(chǔ)的 key 不能按照范圍劃分時(shí),那么范圍分區(qū)就不再適用了,比如 key 是一組 uuid(通用唯一識(shí)別碼)。如下所示:

9eb4d81b-31ec-4c69-a721-c7e1771413dd

此時(shí)范圍分區(qū)就不再適用,就要用到另外一種分區(qū)方式——哈希分區(qū)。

2) 哈希分區(qū)

哈希分區(qū)與范圍分區(qū)相比,它最顯著的優(yōu)勢(shì)是適合任何形式的 key。哈希分區(qū)方法并不復(fù)雜比,id 表達(dá)式如下所示:

id=hash(key)%N

這里的 id 指的是 Redis 實(shí)例的編號(hào),而 N 表示共有多少個(gè) Redis 實(shí)例。

首先調(diào)用一個(gè) crc32() 哈希函數(shù),它可以將 key 轉(zhuǎn)換為一個(gè)整數(shù)。 如下所示:

crc32(key)

假如轉(zhuǎn)換后的整數(shù)是 93024922,此時(shí)共有 4 個(gè) Redis 實(shí)例,對(duì)整數(shù)與實(shí)例的數(shù)量進(jìn)行取模運(yùn)算,就會(huì)得到一個(gè) 0 到 3 之間的整數(shù),如下所示:

93024922 % 4 = 2

上述計(jì)算結(jié)果為 2 ,我們就把這個(gè) key 映射到 R2 實(shí)例中,如果為 3 就映射到 R3實(shí)例中。以此類推,通過(guò)這種方式可以將所有的 key 分散到 4 個(gè)不同的 Redis 實(shí)例中。

分區(qū)技術(shù)的不足

雖然 Redis 分區(qū)技術(shù)有諸多優(yōu)勢(shì),但是它也存在一些不足之處。下面做簡(jiǎn)單介紹:

  • 涉及操作多個(gè) key 時(shí),通常不被支持。這是由于批量操作的 key 會(huì)被映射到不同的 Redis 實(shí)例中,此時(shí)無(wú)法實(shí)現(xiàn)在一個(gè)實(shí)例中操作分散開(kāi)的 key;
  • 不支持包含多個(gè) key 的 Redis 事務(wù);
  • 當(dāng)使用分區(qū)的時(shí)候,數(shù)據(jù)的處理變的非常復(fù)雜,比如需要處理多個(gè) .rdb 或者 .aof 存儲(chǔ)文件,并且還需要從多個(gè) Redis 實(shí)例中備份數(shù)據(jù);
  • 添加、刪除實(shí)例變的復(fù)雜,比如 Redis 集群支持在運(yùn)行時(shí)增加或減少實(shí)例,分區(qū)技術(shù)不支持這種功能。

分區(qū)技術(shù)問(wèn)題解決

我們知道,應(yīng)用 Redis 分區(qū)技術(shù)時(shí)存在一些不足之處,比如在增加、刪除 Redis 實(shí)例時(shí)會(huì)非常麻煩,但這種情況在實(shí)際應(yīng)用中經(jīng)常遇到。比如今天需要?jiǎng)h除 10 臺(tái) Redis 實(shí)例,明天又要增加 20 臺(tái)實(shí)例。那么對(duì)于這種問(wèn)題,有沒(méi)有一種較好的解決辦法呢?下面進(jìn)行簡(jiǎn)單介紹:

其實(shí) Redis 是一種很輕量級(jí)的服務(wù)(每個(gè)實(shí)例僅占用 1 MB),針對(duì)它的這種特性,我們提出以下解決辦法:

在一臺(tái)機(jī)器上開(kāi)啟多個(gè) Redis 實(shí)例,您可以從中選擇一定數(shù)量的實(shí)例作為 Redis 工作集群。當(dāng)集群中某一臺(tái)機(jī)器存儲(chǔ)不足時(shí),您可以將一部分 Redis 實(shí)例移動(dòng)到另外一臺(tái)機(jī)器上,依次類推。這樣就保證了 Redis 的實(shí)例總數(shù)不變,又達(dá)到了增加機(jī)器的目的。


文章題目:Redis分區(qū)技術(shù)詳解
本文地址:http://www.dlmjj.cn/article/cdghdeh.html