【发布时间】:2012-10-19 01:13:26
【问题描述】:
我一直在考虑在一个使用大量写入的项目中使用 Redis。
所以,在我的服务器上设置好之后,我使用 Predis 创建了一个简单的 PHP 脚本,并带有一个简单的循环来添加记录。我还创建了第二个脚本,它只在使用 PHP 的 MySQLi 的 MySQL 表 (InnoDB) 上执行类似的操作。
我运行了一个 10k 循环、一个 100k 循环和一个 500k 循环,并且 MySQL 每次都击败 Redis。事实上,我添加的记录越多,MySQL 与 Redis 相比就越快。
Redis 周围有很多嗡嗡声(炒作?),我想相信我在这里遗漏了一些东西。
请教育我:)
谢谢!
这是我的 Predis 代码:
for ($i=0; $i<100000; $i++) {
$predis->set('key'.$i, $i);
}
这是我的 MySQLi 代码:
for ($i=0; $i<100000; $i++) {
mysqli_query($db, "INSERT INTO test (`key`, `value`) VALUES ('key$i', $i)");
}
【问题讨论】:
-
redis 通过 no-sqlish 符合流行语并不意味着它会很快。
-
可能与:
Redis is a single-threaded server. It is not designed to benefit from multiple CPU cores. People are supposed to launch several Redis instances to scale out on several cores if needed. It is not really fair to compare one single Redis instance to a multi-threaded data store. -
基准代码中有一个错误 - 但有一个基准。我认为没有必要欺负/嘲笑作者。
-
是的,这个笑话很有趣,但@tuki 值得称赞的是至少努力测试。很多人在没有测试的情况下做出技术选择。