sql >> Database >  >> NoSQL >> Redis

Redis is een enkele draad. Waarom zou ik dan sla gebruiken?

Omdat u niet alleen tijd besteedt aan het uitvoeren van opdrachten door Redis, maar ook aan het overdragen van gegevens (verzenden van opdrachten, ontvangen van resultaten). In de single thread-modus terwijl u overzet, werkt Redis niet. Terwijl Redis werkt, vindt er geen overdracht plaats. Meerdere verbindingen of één pijplijnverbinding zijn hier om u te helpen zowel bandbreedte als CPU-cycli te verzadigen.

En bij luttece draait het niet alleen om snelheid. Het helpt je ook om je code beter te organiseren met asynchrone en reactieve API.

Terug naar het prestatieonderwerp, hier is een eenvoudige benchmark om algemeen inzicht te krijgen in de impact van threading en pooling. Merk op dat hoewel poolen een beetje langzamer is (je besteedt wat tijd aan poolbewerkingen), het je in staat stelt acties te isoleren (zodat een fout geen invloed heeft op andere threads) en MULTI te gebruiken en het blokkeren van opdrachten.

Hier zijn mijn resultaten (lokale systeem heeft 4 cores, remote systeem CPU is ongeveer 2 keer langzamer):

Draden=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

Draden=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

Draden=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

Je kunt hier zien dat de prestaties heel goed meewegen met het aantal draden, dus sla is niet nutteloos.




  1. Voorwaarden voor meerdere deelname met behulp van de $lookup-operator

  2. Mongodb kan niet starten

  3. Best practices voor MongoDB-beveiliging

  4. Stappen om MongoDB en Solr te verbinden met behulp van DataImportHandler