sql >> Databasteknik >  >> NoSQL >> Redis

Redis är en tråd. Varför ska jag då använda sallad?

Eftersom du spenderar tid inte bara medan Redis exekverar kommandon, utan också på att överföra data (sända kommandon, ta emot resultat). I enkeltrådsläge medan du överför fungerar inte Redis. Medan Redis fungerar sker ingen överföring. Flera anslutningar eller en pipelined anslutning finns här för att hjälpa dig att mätta både bandbredd och CPU-cykler.

Och luttece handlar inte bara om hastighet. Det hjälper dig också att organisera din kod bättre med asynkront och reaktivt API.

Tillbaka till ämnet prestanda, här är ett enkelt riktmärke för att få en allmän förståelse för inverkan på trådning och poolning. Observera att även om poolning är lite långsammare (du lägger lite tid på pooloperationer), låter den dig isolera åtgärder (så att ett fel inte påverkar andra trådar) och använda MULTI och blockeringskommandon.

Här är mina resultat (lokalt system har 4 kärnor, fjärrsystems CPU är ungefär 2 gånger långsammare):

Trådar=1

Benchmark              (address)   Mode  Cnt      Score      Error  Units
LettuceThreads.pooled     socket  thrpt   25  35389.995 ± 1325.198  ops/s
LettuceThreads.pooled  localhost  thrpt   25  32075.870 ±  416.220  ops/s
LettuceThreads.pooled     remote  thrpt   25   3883.193 ±   67.622  ops/s
LettuceThreads.shared     socket  thrpt   25  39419.772 ± 1966.023  ops/s
LettuceThreads.shared  localhost  thrpt   25  34293.245 ± 1737.349  ops/s
LettuceThreads.shared     remote  thrpt   25   3919.251 ±   49.897  ops/s

Trådar=2

Benchmark              (address)   Mode  Cnt      Score      Error  Units
LettuceThreads.pooled     socket  thrpt   25  56938.187 ± 2727.772  ops/s
LettuceThreads.pooled  localhost  thrpt   25  49420.748 ± 2091.631  ops/s
LettuceThreads.pooled     remote  thrpt   25   7791.706 ±  133.507  ops/s
LettuceThreads.shared     socket  thrpt   25  81195.900 ± 1593.424  ops/s
LettuceThreads.shared  localhost  thrpt   25  78404.688 ± 3878.044  ops/s
LettuceThreads.shared     remote  thrpt   25   3992.023 ±   39.092  ops/s

Trådar=4

Benchmark              (address)   Mode  Cnt       Score      Error  Units
LettuceThreads.pooled     socket  thrpt   25   87345.126 ± 8149.009  ops/s
LettuceThreads.pooled  localhost  thrpt   25   75003.031 ± 4481.289  ops/s
LettuceThreads.pooled     remote  thrpt   25   15807.410 ±  225.376  ops/s
LettuceThreads.shared     socket  thrpt   25  169112.489 ± 3749.897  ops/s
LettuceThreads.shared  localhost  thrpt   25  115464.778 ± 5099.728  ops/s
LettuceThreads.shared     remote  thrpt   25    7952.492 ±  133.521  ops/s

Du kan se här att prestanda skalas väldigt bra med antalet trådar, så sallad är inte värdelös.




  1. hantera namnutrymmesändringar under deserialisering av JSON String

  2. Transaktionsskapande med validering i ServiceStack Redis Client

  3. gke kan inte inaktivera Transparent Huge Pages... behörighet nekad

  4. Mongoose, Välj ett specifikt fält med hitta