sql >> Databasteknik >  >> NoSQL >> Redis

Redis replikering och redis sharding (kluster) skillnad

Sharding är nästan replikationens motsats, även om de är ortogonala koncept och fungerar bra tillsammans.

Sharding, även känd som partitionering, är att dela upp data med nyckel; Medan replikering, även känd som spegling, är att kopiera all data.

Sharding är användbart för att öka prestandan, minska träffen och minnesbelastningen på en resurs. Replikering är användbart för att få en hög tillgänglighet av läsningar. Om du läser från flera repliker kommer du också att minska träfffrekvensen på alla resurser, men minneskravet för alla resurser förblir detsamma. Det bör noteras att även om du kan skriva till en slav, är replikering endast master->slav. Så du kan inte skala skrivningar på det här sättet.

Anta att du har följande tuplar:[1:Apple], [2:Banana], [3:Cherry], [4:Durian] och vi har två maskiner A och B. Med Sharding kan vi lagra nycklar 2,4 på maskin A; och nycklar 1,3 på maskin B. Med replikering lagrar vi nycklar 1,2,3,4 på maskin A och 1,2,3,4 på maskin B.

Sharding implementeras vanligtvis genom att utföra en konsekvent hash på nyckeln. Ovanstående exempel implementerades med följande hashfunktion h(x){return x%2==0?A:B}.

För att kombinera koncepten kan vi replikera varje skärva. I ovanstående fall kunde all data (2,4) för maskin A replikeras på maskin C och all data (1,3) för maskin B skulle kunna replikeras på maskin D.

Varje nyckel-värdelager (varav Redis bara är ett exempel) stöder sharding, även om vissa korsnyckelfunktioner inte längre fungerar. Redis stöder replikering direkt.



  1. Indexering med Redis sorterade uppsättningar

  2. Välj stränglängd i mongodb

  3. MongoDB sortering

  4. Introduktion till distribuerad cache i Hadoop