Skip to main content

Benchmarks

Automated results

Generated 2026-09-13 03:38 UTC from commit 4e5b3825afd2. See the GitHub Actions run for logs and downloadable artifacts.

StackExchange.Redis is the baseline. A ratio below 1.00 means Respire completed the operation faster.

Visual comparison

StackExchange.Redis has no built-in server-assisted client cache, so its values are ordinary server reads. Respire server reads are included for a like-for-like uncached comparison.

Client-cache hit time — net10.0StackExchange.Redis and Respire server reads vs Respire client-cache hit. Shorter bars are faster.
EXISTS hot
StackExchange.Redis186 μs (1.00×)
Respire server read186.7 μs (1.00×)
Respire cache hit447.6 ns (0.002×)
GET hot
StackExchange.Redis188.4 μs (1.00×)
Respire server read187.3 μs (0.99×)
Respire cache hit226.5 ns (0.001×)
GET missing hot
StackExchange.Redis187.7 μs (1.00×)
Respire server read185.7 μs (0.99×)
Respire cache hit203.6 ns (0.001×)
HGET hot
StackExchange.Redis189.4 μs (1.00×)
Respire server read188.7 μs (1.00×)
Respire cache hit561 ns (0.003×)
Selected operation time — net10.0Mean time. Shorter bars are faster.
GET
StackExchange.Redis187.6 μs (1.00×)
Respire186.1 μs (0.99×)
GET x200 pipelined
StackExchange.Redis2.4 μs (1.00×)
Respire2.2 μs (0.89×)
GET x50 concurrent
StackExchange.Redis5.2 μs (1.00×)
Respire5.4 μs (1.03×)
HGET
StackExchange.Redis188.4 μs (1.00×)
Respire187.6 μs (1.00×)
HSET
StackExchange.Redis188.2 μs (1.00×)
Respire188.7 μs (1.00×)
LPUSH+LPOP
StackExchange.Redis365.7 μs (1.00×)
Respire363.5 μs (0.99×)
SET 1KB
StackExchange.Redis189.4 μs (1.00×)
Respire188.5 μs (1.00×)

net10.0

ClientSideCachingBenchmarks


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.401
[Host] : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v3
Job-IDGKZI : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v3

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevMedianOp/sRatioMannWhitney(5%)Gen0AllocatedAlloc Ratio
StackExchange_Exists_ServerReadEXISTS hot186,036.6 ns540.43 ns792.15 ns186,311.1 ns5,375.31.000Baseline-296 B1.00
Respire_Exists_ServerReadEXISTS hot186,735.0 ns585.50 ns876.35 ns186,854.8 ns5,355.21.004Same--0.00
Respire_Exists_ClientCacheHitEXISTS hot447.6 ns2.33 ns3.35 ns449.2 ns2,234,246.40.002Faster--0.00
StackExchange_Get_ServerReadGET hot188,442.4 ns643.98 ns943.94 ns188,545.5 ns5,306.71.000Baseline-528 B1.00
Respire_Get_ServerReadGET hot187,307.0 ns756.61 ns1,132.46 ns187,368.2 ns5,338.80.994Same-64 B0.12
Respire_Get_ClientCacheHitGET hot226.5 ns5.59 ns8.20 ns222.9 ns4,415,371.90.001Faster0.003864 B0.12
StackExchange_GetMissing_ServerReadGET missing hot187,738.9 ns464.60 ns681.01 ns187,669.8 ns5,326.51.000Baseline-416 B1.00
Respire_GetMissing_ServerReadGET missing hot185,734.4 ns730.88 ns1,093.95 ns185,813.7 ns5,384.00.989Same--0.00
Respire_GetMissing_ClientCacheHitGET missing hot203.6 ns6.49 ns9.52 ns212.2 ns4,911,120.40.001Faster--0.00
StackExchange_HGet_ServerReadHGET hot189,372.6 ns633.73 ns888.40 ns189,536.6 ns5,280.61.000Baseline-544 B1.00
Respire_HGet_ServerReadHGET hot188,743.9 ns687.55 ns1,007.81 ns188,672.7 ns5,298.20.997Same-64 B0.12
Respire_HGet_ClientCacheHitHGET hot561.0 ns47.47 ns66.55 ns508.5 ns1,782,383.80.003Faster0.003864 B0.12

CommonOperationsBenchmarks


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.401
[Host] : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v3
Job-IDGKZI : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v3

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevRatioMannWhitney(5%)RatioSDGen0AllocatedAlloc Ratio
StackExchange_ExistsEXISTS184.992 μs0.6073 μs0.9089 μs1.00Baseline0.01-296 B1.00
Respire_ExistsEXISTS187.480 μs0.7076 μs1.0372 μs1.01Same0.01--0.00
StackExchange_GetGET187.553 μs0.7123 μs1.0441 μs1.00Baseline0.01-504 B1.00
Respire_GetGET186.058 μs1.2604 μs1.8866 μs0.99Same0.01-48 B0.10
StackExchange_Get_SteadyStateGET x100 sequential171.955 μs1.1608 μs1.7374 μs1.00Baseline0.01-338 B1.00
Respire_Get_SteadyStateGET x100 sequential170.400 μs0.7144 μs1.0692 μs0.99Same0.01-50 B0.15
StackExchange_Get_PipelinedGET x200 pipelined2.428 μs0.0333 μs0.0489 μs1.00Baseline0.030.0098289 B1.00
Respire_Get_PipelinedGET x200 pipelined2.168 μs0.0159 μs0.0234 μs0.89Faster0.02-60 B0.21
StackExchange_Get_ConcurrentGET x50 concurrent5.224 μs0.0439 μs0.0643 μs1.00Baseline0.02-291 B1.00
Respire_Get_ConcurrentGET x50 concurrent5.372 μs0.0292 μs0.0437 μs1.03Same0.02-52 B0.18
StackExchange_HGetHGET188.364 μs0.5778 μs0.8286 μs1.00Baseline0.01-519 B1.00
Respire_HGetHGET187.562 μs0.7286 μs1.0680 μs1.00Same0.01-48 B0.09
StackExchange_HSetHSET188.174 μs0.5662 μs0.8475 μs1.00Baseline0.01-328 B1.00
Respire_HSetHSET188.747 μs0.5352 μs0.8011 μs1.00Same0.01--0.00
StackExchange_IncrINCR186.692 μs0.5445 μs0.7981 μs1.00Baseline0.01-296 B1.00
Respire_IncrINCR187.602 μs0.4916 μs0.7205 μs1.00Same0.01--0.00
StackExchange_LPushLPopLPUSH+LPOP365.665 μs0.8800 μs1.2899 μs1.00Baseline0.00-760 B1.00
Respire_LPushLPopLPUSH+LPOP363.492 μs0.9374 μs1.3443 μs0.99Same0.00-256 B0.34
StackExchange_PingPING183.900 μs0.4075 μs0.5973 μs1.00Baseline0.00-304 B1.00
Respire_PingPING185.260 μs0.6381 μs0.9353 μs1.01Same0.01--0.00
StackExchange_Ping_SteadyStatePING x100 sequential170.068 μs0.8655 μs1.2955 μs1.00Baseline0.01-242 B1.000
Respire_Ping_SteadyStatePING x100 sequential167.511 μs1.0540 μs1.5775 μs0.99Same0.01-2 B0.008
StackExchange_SAddSADD186.381 μs0.4810 μs0.7199 μs1.00Baseline0.01-312 B1.00
Respire_SAddSADD187.862 μs0.4338 μs0.6358 μs1.01Same0.01--0.00
StackExchange_Set_10KBSET 10KB201.208 μs1.3117 μs1.9633 μs1.00Baseline0.01-312 B1.00
Respire_Set_10KBSET 10KB201.726 μs0.6679 μs0.9997 μs1.00Same0.01--0.00
StackExchange_Set_SmallSET 13B188.467 μs0.5935 μs0.8699 μs1.00Baseline0.01-312 B1.00
Respire_Set_SmallSET 13B186.705 μs0.7039 μs1.0096 μs0.99Same0.01--0.00
StackExchange_Set_1KBSET 1KB189.449 μs0.5613 μs0.8401 μs1.00Baseline0.01-312 B1.00
Respire_Set_1KBSET 1KB188.531 μs0.8931 μs1.3368 μs1.00Same0.01--0.00
StackExchange_Set_SteadyStateSET x100 sequential173.344 μs0.9137 μs1.3676 μs1.00Baseline0.01-250 B1.000
Respire_Set_SteadyStateSET x100 sequential171.677 μs0.8773 μs1.3131 μs0.99Same0.01-2 B0.008
StackExchange_SetDelSET+DEL362.766 μs0.9744 μs1.4584 μs1.00Baseline0.01-648 B1.00
Respire_SetDelSET+DEL361.030 μs0.9169 μs1.3440 μs1.00Same0.01-200 B0.31
StackExchange_SIsMemberSISMEMBER186.203 μs0.5310 μs0.7616 μs1.00Baseline0.01-312 B1.00
Respire_SIsMemberSISMEMBER186.367 μs1.5007 μs2.2462 μs1.00Same0.01--0.00

net8.0

ClientSideCachingBenchmarks


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.401
[Host] : .NET 8.0.31 (8.0.31, 8.0.3126.42015), X64 RyuJIT x86-64-v3
Job-IDGKZI : .NET 8.0.31 (8.0.31, 8.0.3126.42015), X64 RyuJIT x86-64-v3

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevOp/sRatioMannWhitney(5%)RatioSDGen0AllocatedAlloc Ratio
StackExchange_Exists_ServerReadEXISTS hot189,563.6 ns1,192.07 ns1,709.63 ns5,275.31.000Baseline0.01-296 B1.00
Respire_Exists_ServerReadEXISTS hot188,911.2 ns754.25 ns1,128.92 ns5,293.50.997Same0.01--0.00
Respire_Exists_ClientCacheHitEXISTS hot667.7 ns14.82 ns21.25 ns1,497,681.50.004Faster0.00--0.00
StackExchange_Get_ServerReadGET hot194,231.7 ns934.90 ns1,399.32 ns5,148.51.000Baseline0.01-528 B1.00
Respire_Get_ServerReadGET hot187,533.8 ns1,960.36 ns2,934.17 ns5,332.40.966Same0.02-64 B0.12
Respire_Get_ClientCacheHitGET hot410.3 ns21.56 ns32.26 ns2,437,531.40.002Faster0.000.003864 B0.12
StackExchange_GetMissing_ServerReadGET missing hot191,978.9 ns915.21 ns1,369.85 ns5,208.91.000Baseline0.01-416 B1.00
Respire_GetMissing_ServerReadGET missing hot187,536.2 ns903.60 ns1,352.47 ns5,332.30.977Same0.01--0.00
Respire_GetMissing_ClientCacheHitGET missing hot426.5 ns2.70 ns3.87 ns2,344,467.80.002Faster0.00--0.00
StackExchange_HGet_ServerReadHGET hot196,282.2 ns969.02 ns1,450.39 ns5,094.71.000Baseline0.01-544 B1.00
Respire_HGet_ServerReadHGET hot190,617.7 ns1,216.17 ns1,820.31 ns5,246.10.971Same0.01-64 B0.12
Respire_HGet_ClientCacheHitHGET hot784.5 ns2.98 ns4.46 ns1,274,649.40.004Faster0.000.003864 B0.12

CommonOperationsBenchmarks


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.401
[Host] : .NET 8.0.31 (8.0.31, 8.0.3126.42015), X64 RyuJIT x86-64-v3
Job-IDGKZI : .NET 8.0.31 (8.0.31, 8.0.3126.42015), X64 RyuJIT x86-64-v3

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevRatioMannWhitney(5%)RatioSDGen0AllocatedAlloc Ratio
StackExchange_ExistsEXISTS188.862 μs0.7833 μs1.1724 μs1.00Baseline0.01-295 B1.00
Respire_ExistsEXISTS188.664 μs0.6470 μs0.9484 μs1.00Same0.01--0.00
StackExchange_GetGET194.517 μs1.1393 μs1.6699 μs1.00Baseline0.01-504 B1.00
Respire_GetGET189.001 μs0.7735 μs1.1338 μs0.97Same0.01-48 B0.10
StackExchange_Get_SteadyStateGET x100 sequential177.862 μs1.2545 μs1.8777 μs1.00Baseline0.01-338 B1.00
Respire_Get_SteadyStateGET x100 sequential175.956 μs1.0131 μs1.5164 μs0.99Same0.01-50 B0.15
StackExchange_Get_PipelinedGET x200 pipelined2.477 μs0.0589 μs0.0863 μs1.00Baseline0.050.0098289 B1.00
Respire_Get_PipelinedGET x200 pipelined2.258 μs0.0106 μs0.0142 μs0.91Faster0.03-61 B0.21
StackExchange_Get_ConcurrentGET x50 concurrent5.468 μs0.0416 μs0.0596 μs1.00Baseline0.02-291 B1.00
Respire_Get_ConcurrentGET x50 concurrent5.584 μs0.0469 μs0.0687 μs1.02Same0.02-52 B0.18
StackExchange_HGetHGET195.274 μs0.8941 μs1.3382 μs1.00Baseline0.01-520 B1.00
Respire_HGetHGET188.864 μs0.8279 μs1.1873 μs0.97Same0.01-48 B0.09
StackExchange_HSetHSET191.402 μs0.5375 μs0.7879 μs1.00Baseline0.01-328 B1.00
Respire_HSetHSET191.500 μs0.6796 μs1.0172 μs1.00Same0.01--0.00
StackExchange_IncrINCR189.843 μs0.6998 μs1.0474 μs1.00Baseline0.01-296 B1.00
Respire_IncrINCR189.962 μs0.8725 μs1.2514 μs1.00Same0.01--0.00
StackExchange_LPushLPopLPUSH+LPOP379.630 μs1.6683 μs2.4970 μs1.00Baseline0.01-760 B1.00
Respire_LPushLPopLPUSH+LPOP377.081 μs1.3378 μs2.0024 μs0.99Same0.01-256 B0.34
StackExchange_PingPING189.105 μs0.8354 μs1.2503 μs1.00Baseline0.01-304 B1.00
Respire_PingPING189.098 μs0.9210 μs1.3786 μs1.00Same0.01--0.00
StackExchange_Ping_SteadyStatePING x100 sequential175.847 μs1.4400 μs2.1554 μs1.00Baseline0.02-242 B1.000
Respire_Ping_SteadyStatePING x100 sequential172.981 μs1.6639 μs2.4905 μs0.98Same0.02-2 B0.008
StackExchange_SAddSADD191.813 μs0.9327 μs1.3960 μs1.00Baseline0.01-311 B1.00
Respire_SAddSADD192.364 μs0.7349 μs1.1000 μs1.00Same0.01--0.00
StackExchange_Set_10KBSET 10KB206.046 μs2.3148 μs3.4646 μs1.00Baseline0.02-312 B1.00
Respire_Set_10KBSET 10KB208.613 μs1.0108 μs1.4817 μs1.01Same0.02--0.00
StackExchange_Set_SmallSET 13B192.074 μs1.1543 μs1.6920 μs1.00Baseline0.01-312 B1.00
Respire_Set_SmallSET 13B193.051 μs1.0115 μs1.4506 μs1.01Same0.01--0.00
StackExchange_Set_1KBSET 1KB194.245 μs0.9405 μs1.4076 μs1.00Baseline0.01-312 B1.00
Respire_Set_1KBSET 1KB195.164 μs0.9278 μs1.3600 μs1.00Same0.01--0.00
StackExchange_Set_SteadyStateSET x100 sequential180.709 μs0.8740 μs1.2534 μs1.00Baseline0.01-250 B1.000
Respire_Set_SteadyStateSET x100 sequential177.559 μs1.1752 μs1.7225 μs0.98Same0.01-2 B0.008
StackExchange_SetDelSET+DEL373.892 μs1.2855 μs1.8842 μs1.00Baseline0.01-648 B1.00
Respire_SetDelSET+DEL372.739 μs1.3841 μs2.0287 μs1.00Same0.01-200 B0.31
StackExchange_SIsMemberSISMEMBER189.025 μs0.9568 μs1.4025 μs1.00Baseline0.01-311 B1.00
Respire_SIsMemberSISMEMBER189.217 μs1.0147 μs1.5188 μs1.00Same0.01--0.00

Reading the results

Treat shared-runner measurements as directional evidence. Validate important decisions against your payload sizes, concurrency, Redis deployment, and network.