您的位置:首页 > 数据库 > Redis

redis和mysql的数据写入测试

2012-02-02 18:04 447 查看
1)PHP 写入mysql数据的代码

<?php
$mysqli=mysqli_connect("10.1.0.169","root","123456","test","3306");
class runtime
{
var $StartTime = 0;
var $StopTime = 0;

function get_microtime()
{
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}

function start()
{
$this->StartTime = $this->get_microtime();
}

function stop()
{
$this->StopTime = $this->get_microtime();
}

function spent()
{
return round(($this->StopTime - $this->StartTime) * 1000, 1);
}

}
$runtime= new runtime;
$runtime->start();

for($i=1;$i<100000;$i++){
$ins = "insert into `test_order` (`id`)vlaue ('$i')";
mysqli_query($mysqli,$ins);
}
$runtime->stop();
echo "insert sucess! 页面执行时间: ".$runtime->spent()." 毫秒\n";
mysqli_close($mysqli);
?>

结果:
使用PHP 给mysql 插入10W条数据时的状态:执行时间是70秒





使用PHP 给mysql 插入50W条数据时的状态:执行时间是335秒





2) 安装phpredis模块
1. 在https://github.com/owlient/phpredis 下载nicolasff-phpredis-2.1.3-167-ga5e53f1.zip
解压 unzip –q nicolasff-phpredis-2.1.3-167-ga5e53f1.zip
2. cd phpredis
/usr/local/php/bin/phpize 这个phpize是安装php模块的
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
确认是否生成redis扩展库:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
在php.ini中添加extension=redis.so
重新加载php /etc/init.d/php-fpm reload

3. php代码测试
<?php
$redis = new Redis();
$redis->connect('10.1.0.169',6379);
$redis->set('test','hello world!');
echo $redis->get('test');
?>
输出hello world!
3) PHP 写入redis数据的代码

rpush.php代码:
$redis = new Redis();
$redis->connect('10.1.0.169',6379);
$redis->rpush("order","$ins");

lpop.php代码:
$num=$redis->llen("order");
while ($num) {
$ins=$redis->lpop("order");
mysqli_query($mysqli,$ins);
$num=$redis->llen("order");
}

结论:

使用PHP 给redis插入10W条数据时的状态:
执行时间是24秒
使用redis 给mysql插入10W条数据时的状态:
执行时间是120秒
使用PHP 给redis 插入50W条数据时的状态:
执行时间是124秒
使用redis 给mysql插入50W条数据时的状态:
执行时间是735秒

4) 通过测试,验证redis和mysql每秒的插入效率:

测试结论:在网络rtt平均时间为0.2ms,value值大小平均是1kb的情况下,
redis 插入队列数据的效率大约为每秒 4200个value值





同等条件下,mysql插入数据的效率大约为每秒 700个,同样大小数据的insert操作



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: