redis-benchmark -n 1000000 -t set -q -c 1
上記のベンチマークは、1 秒あたり 19,000 のリクエストを提供します
しかし、「set」コマンドの Nodejs ベンチマークでは、1 秒あたり 10,000 リクエストしか提供されません
では、nodejs アプリの 1 秒あたり 10k リクエストと比較して、redis-benchmark が 1 秒あたり 19k リクエストを持っているのはなぜですか?
const Redis = require("ioredis");
const {
performance
} = require('perf_hooks');
// Ready the Redis client A
const RedisAClient = new Redis({ host: "127.0.0.1", port: 6379 });
// Call our benchmarking
Benchmarking();
// Our benchmarking function
async function Benchmarking() {
// Sleep async function
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const loopNumbers = 10000;
let processedTasks = 0;
const WholeTime = performance.now();
for (let i = 0; i < loopNumbers; i++) {
// Call redis for set command
RedisAClient.set("testing", i, function (err, reply) {
processedTasks++;
});
// If it is last loop then log the benchmark
if (i == loopNumbers - 1) {
// Wait for the all tasks to complete
while (processedTasks != (loopNumbers)) { await sleep(1); }
console.log((performance.now() - WholeTime) + "ms")
}
}
}