Skip to main content

Benchmarks

Automated results

Generated 2026-08-16 03:54 UTC from commit 3bfb048670b9. 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.Redis141.2 μs (1.00×)
Respire server read143 μs (1.01×)
Respire cache hit462.9 ns (0.003×)
GET hot
StackExchange.Redis148.6 μs (1.00×)
Respire server read144.6 μs (0.97×)
Respire cache hit216.5 ns (0.001×)
GET missing hot
StackExchange.Redis146.3 μs (1.00×)
Respire server read143.7 μs (0.98×)
Respire cache hit204.3 ns (0.001×)
HGET hot
StackExchange.Redis150 μs (1.00×)
Respire server read143.9 μs (0.96×)
Respire cache hit528.7 ns (0.004×)
Selected operation time — net10.0Mean time. Shorter bars are faster.
GET
StackExchange.Redis147.5 μs (1.00×)
Respire143.7 μs (0.97×)
GET x200 pipelined
StackExchange.Redis2 μs (1.00×)
Respire1.9 μs (0.99×)
GET x50 concurrent
StackExchange.Redis4.8 μs (1.00×)
Respire4.9 μs (1.03×)
HGET
StackExchange.Redis149.5 μs (1.00×)
Respire143.3 μs (0.96×)
HSET
StackExchange.Redis143.5 μs (1.00×)
Respire144.8 μs (1.01×)
LPUSH+LPOP
StackExchange.Redis291.2 μs (1.00×)
Respire283.6 μs (0.97×)
SET 1KB
StackExchange.Redis148.2 μs (1.00×)
Respire145 μs (0.98×)

net10.0

ClientSideCachingBenchmarks


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 9V74 2.85GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.400
[Host] : .NET 10.0.11 (10.0.11, 10.0.1126.37416), X64 RyuJIT x86-64-v3
Job-IDGKZI : .NET 10.0.11 (10.0.11, 10.0.1126.37416), X64 RyuJIT x86-64-v3

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevMedianOp/sRatioMannWhitney(5%)RatioSDGen0AllocatedAlloc Ratio
StackExchange_Exists_ServerReadEXISTS hot141,172.8 ns1,144.09 ns1,712.42 ns141,564.8 ns7,083.51.000Baseline0.02-295 B1.00
Respire_Exists_ServerReadEXISTS hot143,008.8 ns709.90 ns1,040.56 ns143,170.3 ns6,992.61.013Same0.01--0.00
Respire_Exists_ClientCacheHitEXISTS hot462.9 ns2.92 ns3.99 ns463.4 ns2,160,290.80.003Faster0.00--0.00
StackExchange_Get_ServerReadGET hot148,628.4 ns1,291.11 ns1,851.67 ns149,031.0 ns6,728.21.000Baseline0.02-527 B1.00
Respire_Get_ServerReadGET hot144,572.8 ns1,043.21 ns1,496.15 ns144,816.4 ns6,916.90.973Same0.02-64 B0.12
Respire_Get_ClientCacheHitGET hot216.5 ns2.60 ns3.73 ns213.7 ns4,618,326.70.001Faster0.000.003864 B0.12
StackExchange_GetMissing_ServerReadGET missing hot146,276.3 ns1,185.24 ns1,737.31 ns146,213.8 ns6,836.41.000Baseline0.02-416 B1.00
Respire_GetMissing_ServerReadGET missing hot143,698.3 ns1,261.16 ns1,808.72 ns144,108.8 ns6,959.00.983Same0.02--0.00
Respire_GetMissing_ClientCacheHitGET missing hot204.3 ns2.26 ns3.24 ns204.5 ns4,895,875.30.001Faster0.00--0.00
StackExchange_HGet_ServerReadHGET hot149,972.6 ns941.74 ns1,380.39 ns149,844.8 ns6,667.91.000Baseline0.01-543 B1.00
Respire_HGet_ServerReadHGET hot143,865.4 ns828.80 ns1,214.84 ns144,029.0 ns6,950.90.959Same0.01-64 B0.12
Respire_HGet_ClientCacheHitHGET hot528.7 ns1.64 ns2.40 ns528.4 ns1,891,305.20.004Faster0.000.003864 B0.12

CommonOperationsBenchmarks


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 9V74 2.85GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.400
[Host] : .NET 10.0.11 (10.0.11, 10.0.1126.37416), X64 RyuJIT x86-64-v3
Job-IDGKZI : .NET 10.0.11 (10.0.11, 10.0.1126.37416), X64 RyuJIT x86-64-v3

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevRatioMannWhitney(5%)RatioSDGen0AllocatedAlloc Ratio
StackExchange_ExistsEXISTS140.643 μs0.9363 μs1.3429 μs1.00Baseline0.01-296 B1.00
Respire_ExistsEXISTS142.430 μs0.7473 μs1.0717 μs1.01Same0.01--0.00
StackExchange_GetGET147.461 μs1.5608 μs2.2877 μs1.00Baseline0.02-504 B1.00
Respire_GetGET143.686 μs0.8368 μs1.2525 μs0.97Same0.02-48 B0.10
StackExchange_Get_SteadyStateGET x100 sequential117.839 μs1.1738 μs1.6834 μs1.00Baseline0.02-338 B1.00
Respire_Get_SteadyStateGET x100 sequential116.283 μs0.5282 μs0.7906 μs0.99Same0.02-50 B0.15
StackExchange_Get_PipelinedGET x200 pipelined1.967 μs0.0858 μs0.1284 μs1.00Baseline0.090.0098289 B1.00
Respire_Get_PipelinedGET x200 pipelined1.945 μs0.0168 μs0.0246 μs0.99Same0.07-60 B0.21
StackExchange_Get_ConcurrentGET x50 concurrent4.750 μs0.0240 μs0.0351 μs1.00Baseline0.010.0098291 B1.00
Respire_Get_ConcurrentGET x50 concurrent4.875 μs0.0401 μs0.0600 μs1.03Same0.01-52 B0.18
StackExchange_HGetHGET149.467 μs1.1352 μs1.6280 μs1.00Baseline0.02-520 B1.00
Respire_HGetHGET143.299 μs1.2347 μs1.8099 μs0.96Same0.02-48 B0.09
StackExchange_HSetHSET143.524 μs1.0410 μs1.5259 μs1.00Baseline0.01-328 B1.00
Respire_HSetHSET144.752 μs0.7695 μs1.1517 μs1.01Same0.01--0.00
StackExchange_IncrINCR142.220 μs0.9246 μs1.3839 μs1.00Baseline0.01-296 B1.00
Respire_IncrINCR142.637 μs1.6458 μs2.3072 μs1.00Same0.02--0.00
StackExchange_LPushLPopLPUSH+LPOP291.163 μs1.7422 μs2.6076 μs1.00Baseline0.01-760 B1.00
Respire_LPushLPopLPUSH+LPOP283.581 μs1.4174 μs1.8921 μs0.97Same0.01-256 B0.34
StackExchange_PingPING137.311 μs0.9347 μs1.3701 μs1.00Baseline0.01-304 B1.00
Respire_PingPING140.786 μs1.3395 μs1.9634 μs1.03Same0.02--0.00
StackExchange_Ping_SteadyStatePING x100 sequential114.903 μs0.7330 μs1.0744 μs1.00Baseline0.01-242 B1.000
Respire_Ping_SteadyStatePING x100 sequential113.791 μs0.8606 μs1.1488 μs0.99Same0.01-2 B0.008
StackExchange_SAddSADD139.424 μs0.7712 μs1.1304 μs1.00Baseline0.01-312 B1.00
Respire_SAddSADD143.535 μs0.8322 μs1.2457 μs1.03Same0.01--0.00
StackExchange_Set_10KBSET 10KB158.783 μs0.8215 μs1.1782 μs1.00Baseline0.01-312 B1.00
Respire_Set_10KBSET 10KB160.815 μs0.7793 μs1.1176 μs1.01Same0.01--0.00
StackExchange_Set_SmallSET 13B145.183 μs0.5818 μs0.8343 μs1.00Baseline0.01-312 B1.00
Respire_Set_SmallSET 13B142.392 μs0.6551 μs0.9396 μs0.98Same0.01--0.00
StackExchange_Set_1KBSET 1KB148.194 μs0.5941 μs0.8708 μs1.00Baseline0.01-312 B1.00
Respire_Set_1KBSET 1KB145.042 μs1.0035 μs1.4068 μs0.98Same0.01--0.00
StackExchange_Set_SteadyStateSET x100 sequential119.934 μs0.6978 μs0.9552 μs1.00Baseline0.01-250 B1.000
Respire_Set_SteadyStateSET x100 sequential118.046 μs0.5911 μs0.8847 μs0.98Same0.01-2 B0.008
StackExchange_SetDelSET+DEL282.499 μs2.0781 μs3.1104 μs1.00Baseline0.02-648 B1.00
Respire_SetDelSET+DEL279.282 μs0.9565 μs1.4316 μs0.99Same0.01-200 B0.31
StackExchange_SIsMemberSISMEMBER141.946 μs0.6170 μs0.9045 μs1.00Baseline0.01-312 B1.00
Respire_SIsMemberSISMEMBER144.673 μs0.8530 μs1.2234 μs1.02Same0.01--0.00

net8.0

ClientSideCachingBenchmarks


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

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevMedianOp/sRatioMannWhitney(5%)Gen0AllocatedAlloc Ratio
StackExchange_Exists_ServerReadEXISTS hot197,012.7 ns617.42 ns924.12 ns197,021.1 ns5,075.81.000Baseline-296 B1.00
Respire_Exists_ServerReadEXISTS hot200,874.6 ns832.45 ns1,245.98 ns200,746.3 ns4,978.21.020Same--0.00
Respire_Exists_ClientCacheHitEXISTS hot620.5 ns1.17 ns1.57 ns619.9 ns1,611,525.80.003Faster--0.00
StackExchange_Get_ServerReadGET hot202,874.5 ns1,070.66 ns1,602.51 ns203,269.8 ns4,929.21.000Baseline-527 B1.00
Respire_Get_ServerReadGET hot201,566.4 ns598.22 ns895.39 ns201,583.8 ns4,961.10.994Same-64 B0.12
Respire_Get_ClientCacheHitGET hot397.9 ns12.76 ns18.30 ns412.4 ns2,513,500.20.002Faster0.003864 B0.12
StackExchange_GetMissing_ServerReadGET missing hot201,190.7 ns935.02 ns1,399.50 ns201,376.6 ns4,970.41.000Baseline-416 B1.00
Respire_GetMissing_ServerReadGET missing hot200,664.8 ns820.54 ns1,202.74 ns200,623.1 ns4,983.40.997Same--0.00
Respire_GetMissing_ClientCacheHitGET missing hot397.3 ns25.25 ns34.56 ns368.3 ns2,516,803.00.002Faster--0.00
StackExchange_HGet_ServerReadHGET hot205,621.3 ns779.38 ns1,166.54 ns205,768.3 ns4,863.31.000Baseline-544 B1.00
Respire_HGet_ServerReadHGET hot201,568.6 ns911.09 ns1,335.47 ns201,489.5 ns4,961.10.980Same-64 B0.12
Respire_HGet_ClientCacheHitHGET hot740.2 ns5.62 ns7.87 ns737.8 ns1,351,053.50.004Faster0.003864 B0.12

CommonOperationsBenchmarks


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

IterationCount=15 LaunchCount=2 WarmupCount=10

MethodCategoriesMeanErrorStdDevRatioMannWhitney(5%)RatioSDGen0AllocatedAlloc Ratio
StackExchange_ExistsEXISTS196.989 μs0.8086 μs1.2103 μs1.00Baseline0.01-296 B1.00
Respire_ExistsEXISTS200.125 μs0.6435 μs0.9631 μs1.02Same0.01--0.00
StackExchange_GetGET202.638 μs0.8534 μs1.2508 μs1.00Baseline0.01-504 B1.00
Respire_GetGET200.240 μs0.8340 μs1.2483 μs0.99Same0.01-48 B0.10
StackExchange_Get_SteadyStateGET x100 sequential181.609 μs0.7835 μs1.1236 μs1.00Baseline0.01-338 B1.00
Respire_Get_SteadyStateGET x100 sequential181.849 μs1.2577 μs1.8824 μs1.00Same0.01-50 B0.15
StackExchange_Get_PipelinedGET x200 pipelined2.554 μs0.0713 μs0.1068 μs1.00Baseline0.060.0098289 B1.00
Respire_Get_PipelinedGET x200 pipelined2.297 μs0.0133 μs0.0191 μs0.90Faster0.04-61 B0.21
StackExchange_Get_ConcurrentGET x50 concurrent5.667 μs0.0495 μs0.0725 μs1.00Baseline0.02-291 B1.00
Respire_Get_ConcurrentGET x50 concurrent5.819 μs0.0320 μs0.0479 μs1.03Same0.02-52 B0.18
StackExchange_HGetHGET204.357 μs0.7614 μs1.1396 μs1.00Baseline0.01-520 B1.00
Respire_HGetHGET201.110 μs0.6202 μs0.9282 μs0.98Same0.01-48 B0.09
StackExchange_HSetHSET198.982 μs0.4639 μs0.6800 μs1.00Baseline0.00-328 B1.00
Respire_HSetHSET203.395 μs0.5081 μs0.7448 μs1.02Same0.01--0.00
StackExchange_IncrINCR198.224 μs0.7161 μs1.0719 μs1.00Baseline0.01-296 B1.00
Respire_IncrINCR200.717 μs0.9608 μs1.4380 μs1.01Same0.01--0.00
StackExchange_LPushLPopLPUSH+LPOP395.551 μs1.3760 μs1.9289 μs1.00Baseline0.01-760 B1.00
Respire_LPushLPopLPUSH+LPOP391.007 μs1.5667 μs2.3450 μs0.99Same0.01-256 B0.34
StackExchange_PingPING194.639 μs0.8377 μs1.2539 μs1.00Baseline0.01-304 B1.00
Respire_PingPING197.359 μs0.9154 μs1.3701 μs1.01Same0.01--0.00
StackExchange_Ping_SteadyStatePING x100 sequential180.738 μs1.4302 μs2.1407 μs1.00Baseline0.02-242 B1.000
Respire_Ping_SteadyStatePING x100 sequential180.440 μs1.0386 μs1.5223 μs1.00Same0.01-2 B0.008
StackExchange_SAddSADD197.844 μs0.7374 μs1.1038 μs1.00Baseline0.01-312 B1.00
Respire_SAddSADD200.740 μs0.5686 μs0.8510 μs1.01Same0.01--0.00
StackExchange_Set_10KBSET 10KB209.497 μs1.0159 μs1.5206 μs1.00Baseline0.01-312 B1.00
Respire_Set_10KBSET 10KB216.268 μs0.6293 μs0.9419 μs1.03Same0.01--0.00
StackExchange_Set_SmallSET 13B198.966 μs0.9731 μs1.4564 μs1.00Baseline0.01-310 B1.00
Respire_Set_SmallSET 13B202.813 μs0.4559 μs0.6538 μs1.02Same0.01--0.00
StackExchange_Set_1KBSET 1KB200.325 μs0.7413 μs1.0632 μs1.00Baseline0.01-312 B1.00
Respire_Set_1KBSET 1KB204.390 μs0.6127 μs0.9171 μs1.02Same0.01--0.00
StackExchange_Set_SteadyStateSET x100 sequential184.033 μs1.1550 μs1.6930 μs1.00Baseline0.01-250 B1.000
Respire_Set_SteadyStateSET x100 sequential184.837 μs1.1941 μs1.7872 μs1.00Same0.01-2 B0.008
StackExchange_SetDelSET+DEL389.661 μs1.4803 μs2.1231 μs1.00Baseline0.01-648 B1.00
Respire_SetDelSET+DEL388.894 μs1.0429 μs1.5287 μs1.00Same0.01-200 B0.31
StackExchange_SIsMemberSISMEMBER196.831 μs0.6532 μs0.9575 μs1.00Baseline0.01-312 B1.00
Respire_SIsMemberSISMEMBER200.083 μs0.5064 μs0.7579 μs1.02Same0.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.