是这样的, 心血来潮, 想测试一下 redis 有多快, 经过我测试, 发现 Redis总是比MySQL慢一点,我想知道是什么原因, 望指教。代码如下:
<?php
$driver = "redis";
// 测试 mysql 驱动时,打开注释
// $driver = "mysql";
// 插入的条数
const SIZE = 10000;
//
$t1 = microtime(true);
// 为了方便测试,插入的数据是固定的
$name = "test";
$pwd = "####";
$age = 21;
if ($driver === 'redis')
{
$redis = new Redis();
$redis->connect('127.0.0.1', 6379) or die('redis 服务未启动');
$redis->setOption(Redis::OPT_PREFIX,'hash_');
for ($i = 0; $i < SIZE; ++ $i)
{
// 就用用户名做哈希名,不允许重复用户名
$redis->hSet($i, 'name', $name);
$redis->hSet($i, 'pwd', $pwd);
$redis->hSet($i, 'age', $age);
}
$redis->close();
}
else
{
// $dbh = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root');
for ($i = 0; $i < SIZE; ++ $i)
{
$sql = "insert into `redis_user`(`name`, `pwd`, `age`) values('{$name}', '{$pwd}', '{$age}')";
$dbh->exec($sql);
}
$dbh = null;
}
$t2 = microtime(true);
/**
* 插入 10000 条数据
* 使用 redis 驱动 共插入了 10000 条数据, 时间使用:3.4171187877655
* 使用 mysql 驱动 共插入了 10000 条数据, 时间使用:2.771833896637
*
* 插入 100000 条数据
* 使用 redis 驱动 共插入了 100000 条数据, 时间使用:34.385821819305
* 使用 mysql 驱动 共插入了 100000 条数据, 时间使用:18.874236822128
*/
echo "使用 {$driver} 驱动 共插入了 {$i} 条数据, 时间使用:" . ($t2 - $t1);
如果是代码上的原因,望指出
3 回答

慕运维8079593
TA贡献1876条经验 获得超5个赞
并非Redis比MySQL慢,而是时间都消耗在网络上了(即便访问本机也占用网络开销的)。
可以试试Redis的multi-set或pipeline功能(一次网络开销写入多条数据),然后跟MySQL的multi-insert相比较。
- 3 回答
- 0 关注
- 863 浏览
添加回答
举报
0/150
提交
取消