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.