mysql和redis效率问题?
橱窗的光
橱窗的光 2017-03-14 09:37:36
0
2
1106
<?php 
$redis = new redis();
$redis->connect('127.0.0.1', 6379);
for ($i=0; $i <100 ; $i++) { 
    $redis->lpush('test',rand(1000,9999));
}
var_dump($redis->lrange('test', 0, 99));
$redis->delete('test');
$redis->close();
die;
 ?>
=================================
<?php 
$host = 'mysql:host=127.0.0.1;dbname=test';
$user = 'root';
$pass = 'root';
$pdo = new PDO($host, $user, $pass);
for ($i=0; $i < 100 ; $i++) { 
    $pdo->query('insert into abc (title) values( title = '.rand(1000,9999).')');
}
var_dump($pdo->query('select * from abc')->fetch());
$pdo->query('truncate table abc');
die;
 ?>

使用ab压力测试

ab -n10000 -c10000 

二者测试结果接近,MYSQL略优,但是如果直接运行以下代码

<?php 
$redis = new redis();
$redis->connect('127.0.0.1', 6379);
for ($i=0; $i <10000 ; $i++) { 
    $redis->lpush('test',rand(1000,9999));
}
var_dump($redis->lrange('test', 0, 9999));
$redis->delete('test');
$redis->close();
die;
 ?>
=================================
<?php 
$host = 'mysql:host=127.0.0.1;dbname=test';
$user = 'root';
$pass = 'root';
$pdo = new PDO($host, $user, $pass);
for ($i=0; $i < 10000 ; $i++) { 
    $pdo->query('insert into abc (title) values( title = '.rand(1000,9999).')');
}
var_dump($pdo->query('select * from abc')->fetch());
$pdo->query('truncate table abc');
die;
 ?>

mysql耗费的时间是redis的100多倍,这是为什么?是和连接数有关吗

橱窗的光
橱窗的光

모든 응답(2)
数据分析师

Mysql과 redis 효율성 문제가 있나요? -PHP 중국어 웹사이트 Q&A-mysql과 redis 효율성 문제? -PHP 중국어 홈페이지 Q&A

꼭 보고 배워보세요.

迷茫

姑且不讨论这么比较的意义。

需要注意的是,不管是Redis还是MySQL,创建连接的消耗都是不可忽视的。具体到你贴的代码,场景1下,连接都重复创建了10000次,时间主要都花在创建连接上了,执行命令的时间相比而言是次要的;场景2下,都只创建了一次连接,那么对比的主要就是各自执行命令的速度了,Redis完胜是必然的。

要验证是不是这个原因也很简单,把创建连接的耗时和执行命令的耗时记录下来对比一下就行了。

而且,你的代码中,如果Redis采用pipeline模式来发送命令,Redis的优势会更大。


최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿