$driver = "redis";
$driver = "mysql";
// 插入的条数
const SIZE = 100000;
//
$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 . '#' . $pwd . '#' . $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);
/**
* 插入 1000 条数据
* 使用 redis 驱动 共插入了 1000 条数据, 时间使用:0.20561599731445
* 使用 mysql 驱动 共插入了 1000 条数据, 时间使用:1.5798699855804
* 10000 条数据
* 使用 redis 驱动 共插入了 10000 条数据, 时间使用:1.6717090606689
* 使用 mysql 驱动 共插入了 10000 条数据, 时间使用:4.0666799545288
* 100000 条数据
* 使用 redis 驱动 共插入了 100000 条数据, 时间使用:15.782356023788
* 使用 mysql 驱动 共插入了 100000 条数据, 时间使用:27.720022916794
*/
echo "使用 {$driver} 驱动 共插入了 {$i} 条数据, 时间使用:" . ($t2 - $t1);
这是根据 helloworld_ 朋友回答之后的测试, 确实是变快了。
补充, 我通过 ab 压力测试, 发现差距更是巨大
第一张图是redis 的
ab 测试的时候, 我把for循环删去了