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

Redis ydeevne på en multi-core CPU

Jeg har kigget på redis-webstedet og fundet ud af, at redis ikke er designet til en multi-core CPU. Mit spørgsmål er, hvorfor er det sådan?

Det er en designbeslutning.

Redis er enkelttrådet med epoll/kqueue og skalerer på ubestemt tid med hensyn til I/O-samtidighed. [email protected] (skaber af Redis)

En grund til at vælge en begivenhedsdrevet tilgang er, at synkronisering mellem tråde koster både softwaren (kodekompleksitet) og hardwareniveauet (kontekstskift). Læg dertil, at flaskehalsen ved Redis normalt er netværket , ikke CPU'en. På den anden side har en enkelt-trådet arkitektur sine egne fordele (for eksempel garantien for atomicitet).

Derfor virker begivenhedsløkker som et godt design til en effektiv &skalerbar system som Redis.

Også, hvis ja, hvordan kan vi få 100 % udnyttelse af CPU-ressourcer til at ændre på en multi-core CPU'er.

Redis tilgang til skalering over flere kerner er sharding , mest sammen med Twemproxy.

Men hvis du af en eller anden grund stadig ønsker at bruge en flertrådet tilgang, så tag et kig på Thredis, men sørg for at forstå implikationerne af, hvad forfatteren gjorde (du kan f.eks. ikke bruge den som en replikeringsmaster).



  1. udløb redis cache-nøgle på bestemte tidspunkter i stedet for varighed

  2. MongoDB:Hvad er forbindelsespooling og timeout?

  3. MapReduce med MongoDB virkelig, virkelig langsom (30 timer vs 20 minutter i MySQL for en tilsvarende database)

  4. Unikt indeks i mongoose virker ikke