当前位置: 首页 > 面试题库 >

Redis对Hget和HSet命令的基准测试

鲜于宜修
2023-03-14
问题内容

我找不到带redis的HGET,HSET(哈希表命令)基准标记的示例。任何示例或资源都将对此有用。


问题答案:

我只是意识到redis-benchmark命令没有基准hSethGet命令。(我正在使用v2.8.5)

您可以做的是编写一个小程序来对性能进行基准测试:

<?php

$redis = new Redis();
$redis->pconnect("127.0.0.1");

$count = 10000;

$start_t = microtime(true);
for ($i = 1; $i < $count; $i++) {
    $redis->hSet("h{$i}", 'f', $i);
}
$end_t = microtime(true);

echo "Time taken for hSet = " . round(1000 * ($end_t - $start_t)) . "ms (for " . number_format($count) . " keys)\n";

$start_t = microtime(true);
$pipeline1 = $redis->pipeline();
for ($i = 1; $i < $count; $i++) {
    $pipeline1->hSet("h{$i}", 'f', $i);
}
$result2 = $pipeline1->exec();
$end_t = microtime(true);

echo "Time taken for hSet (bulk) = " . round(1000 * ($end_t - $start_t)) . "ms (for " . number_format($count) . " keys)\n";

$start_t = microtime(true);
for ($i = 1; $i < $count; $i++) {
    $redis->hGet("h{$i}", 'f');
}
$end_t = microtime(true);

echo "Time taken for hGet = " . round(1000 * ($end_t - $start_t)) . "ms (for " . number_format($count) . " keys)\n";

$start_t = microtime(true);
$pipeline2 = $redis->pipeline();
for ($i = 1; $i < $count; $i++) {
    $pipeline2->hGet("h{$i}", 'f');
}
$result2 = $pipeline2->exec();
$end_t = microtime(true);

echo "Time taken for hGet (bulk) = " . round(1000 * ($end_t - $start_t)) . "ms (for " . number_format($count) . " keys)\n";


$start_t = microtime(true);
$pipeline3 = $redis->pipeline();
for ($i = 1; $i < $count; $i++) {
    $pipeline3->hDel("h{$i}", 'f');
}
$result3 = $pipeline3->exec();
$end_t = microtime(true);

echo "Time taken for hDel (bulk) = " . round(1000 * ($end_t - $start_t)) . "ms (for " . number_format($count) . " keys)\n";

在我的测试服务器上,结果如下:

$ php redis/benchmark_redis.php Time taken for hSet = 557ms (for 10,000 keys) Time taken for hSet (bulk) = 51ms (for 10,000 keys) Time taken for hGet = 483ms (for 10,000 keys) Time taken for hGet (bulk) = 43ms (for 10,000 keys) Time taken for hDel (bulk) = 49ms (for 10,000 keys)



 类似资料:
  • 问题内容: Redis中命令的准确性如何? 我注意到,返回的键数与命令返回的实际键数不匹配。 这是一个例子: 为什么键数比实际数字高得多? 问题答案: 我想说这与密钥到期有关。 键/值存储(例如Redis或memcached)无法为每个要过期的对象定义物理计时器。他们太多了。取而代之的是,他们定义一个数据结构以轻松跟踪要过期的项目,并将所有过期事件多路复用到单个物理计时器。他们还倾向于实施惰性策略

  • 问题内容: 假设我想对两个程序进行基准测试:foo.py和bar.py。 有一对夫妇一千运行和各自的平均值和充足的足够分析和比较他们的速度? 编辑: 此外,如果每个程序的执行时间都不到一秒(假设不是以上所述),则可以使用吗? 问题答案: 对于运行一秒钟的基准测试,它可以产生足够好的时间,否则,与运行时间相比,该过程花费的时间可能会很大。 但是,在进行基准测试时,应注意上下文切换。也就是说,另一个进

  • 问题内容: 我正在尝试在hget块内的node.js中执行hdel命令。这是代码: 它不起作用,我不明白为什么!任何帮助将不胜感激。 问题答案: 由于您使用request [i]作为参数,因此我们可以假定此代码块被封装在循环中:也许您正在尝试对数组进行迭代并为每个项目执行hget / hdel。 在这种情况下,您很有可能会被Javascript的作用域规则所困扰:requests [i]是闭包的一

  • 11.4. 基准测试 基准测试是测量一个程序在固定工作负载下的性能。在Go语言中,基准测试函数和普通测试函数写法类似,但是以Benchmark为前缀名,并且带有一个*testing.B类型的参数;*testing.B参数除了提供和*testing.T类似的方法,还有额外一些和性能测量相关的方法。它还提供了一个整数N,用于指定操作执行的循环次数。 下面是IsPalindrome函数的基准测试,其中循

  • GoCPPLua (JIT) 策略执行的负载在model_b_test.go中进行基准测试。 测试是: 英特尔 酷睿 i7-6700HQ CPU @ 2.60GHz, 2601 Mhz, 4 核, 8 处理器 go test -bench= -benchmem 的测试结果如下 (op = 一次 Enforce() 调用, ms = 毫秒, KB = 千字节): 测试用例 规则大小 时间开销 (m

  • 本文向大家介绍redis Redis命令行界面,包括了redis Redis命令行界面的使用技巧和注意事项,需要的朋友参考一下 示例 redis-cli是Redis命令行界面程序,该程序允许直接从终端向Redis发送命令并读取服务器发送的回复。基本命令行用法如下: 访问redis: 通过身份验证访问redis: 选择数据库并显示数据库大小(默认数据库号为0): 获取有关服务器的信息和统计信息: 从