sql >> Database teknologi >  >> NoSQL >> Redis

Redis:Amazon EC2 vs Elasticache

tl;dr:Elasticache tvinger dig til at bruge en enkelt forekomst af redis, hvilket er suboptimalt.

Den lange version:

Jeg er klar over, at dette er et gammelt indlæg (2 år på tidspunktet for skrivningen), men jeg synes, det er vigtigt at bemærke et punkt, jeg ikke kan se her.

På elasticache administreres din redis-implementering af Amazon. Det betyder, at du sidder fast med, hvordan de vælger at køre din redis.

Redis bruger en enkelt udførelsestråd til at læse/skrive. Dette sikrer ensartethed uden låsning. Det er et stort aktiv med hensyn til ydeevne ikke at styre låse og låse. Den uheldige konsekvens er dog, at hvis din EC2 har mere end 1 vCPU, vil de forblive ubrugte. Dette er tilfældet for alle elasticache-instanser med mere end én vCPU.

Standardstørrelsen for elasticache-forekomster er cache.r3.large , som har to kerner.

Faktisk er der en række instansstørrelser med flere vCPU'er. Masser af muligheder for at dette problem kan manifestere sig.

Det lader til, at Amazon allerede er klar over dette problem, men de virker en smule afvisende over for det.

Den del, der gør dette særligt relevant for dette spørgsmål, er, at du på din EC2 (da du administrerer din egen implementering) er i stand til at implementere multi-tenancy . Dette betyder, at du har mange tilfælde af redis-processen, der lytter på forskellige porte. Ved at vælge, hvilken port der skal læses/skrives til/fra i applikationen baseret på en hash af postens nøgle, kan du udnytte alle dine vCPU'er.

Som en sidebemærkning; en redis elasticache-udrulning på en multi-core-maskine bør altid under-ydeføre sammenlignet med memcached elasticache-implementering på instansstørrelsen. Med multi-tenancy plejer redis at være vinderen.

Opdatering:

Amazon giver nu separate metrics for din redis-instans CPU, EngineCPUUtilization. Du behøver ikke længere at beregne din CPU med den sjuskede multiplikation, men multi-tenancy er stadig ikke implementeret.



  1. Skal jeg afslutte min node redis-klientinstans ved hjælp af .quit()?

  2. Introduktion til Morphia – Java ODM til MongoDB

  3. Sådan genbruges forbindelsen til Mongodb korrekt på tværs af NodeJs applikation og moduler

  4. Henter HTML fra MongoDB til brug i skabelon