开发者资讯

 首页 > 开发者资讯 > 编程开发 > Predis和Phpredis性能测试对比

Predis和Phpredis性能测试对比

分享到:
【字体:
导读:
         [导读] 最近签到功能并发量有点大,php的slow log里记录的大部分日志都是关于redis的,我们线上环境是通过predis连接redis服务器的,phpredis是C预言扩展,理论上要比predis快,所以做了一下性能对比

先回复读取命令。

1.本地 pipe VS default

	1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
	php
require __DIR__.'/predis/autoload.php' ;

function getMillisecond() {
    list($s1, $s2) = explode(' ', microtime());
    return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
}

$client = new PredisClient([
    'scheme' => 'tcp',
    'host'   => '127.0.0.1',
    'port'   => 6379
]);

$sTime = getMillisecond() ;
for ($i=0; $i < 100000; $i++) {
    // $result = $client->set('admin', 'gjx') ;
    $result = $client->get('admin') ;
}
$eTime = getMillisecond() ;
var_dump($eTime-$sTime) ;

$sTime = getMillisecond() ;
$responses = $client->pipeline(function ($pipe) {
    for ($i = 0; $i < 100000; $i++) {
        // $pipe->set('admin', 'gjx') ;
        $pipe->get("admin");
    }
});
$eTime = getMillisecond() ;
var_dump($eTime-$sTime) ;

取三组数据:

记录 tcp pipe
1 5366 1474
2 5587 1491
3 5804 1511

取平均数:tcp:5585.7毫秒 pipe:1492.0毫秒

pipe模式快于tcp将近75%,这仅仅是本机测试结果而已。

2.下面看看真正网络传输情况下的对比:

这次连接 ip为:192.168.0.210 局域网内的机器,为了能尽快的出现结果,将循环数改为10000

	1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
	php
require __DIR__.'/predis/autoload.php' ;

function getMillisecond() {
    list($s1, $s2) = explode(' ', microtime());
    return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
}

$client = new PredisClient([
    'scheme' => 'tcp',
    'host'   => '192.168.0.210',
    'port'   => 6379
]);


$sTime = getMillisecond() ;
for ($i=0; $i < 10000; $i++) {
    // $result = $client->set('admin', 'gjx') ;
    $result = $client->get('admin') ;
}
$eTime = getMillisecond() ;
var_dump($eTime-$sTime) ;

$sTime = getMillisecond() ;
$responses = $client->pipeline(function ($pipe) {
    for ($i = 0; $i < 10000; $i++) {
        // $pipe->set('admin', 'gjx') ;
        $pipe->get("admin");
    }
});
$eTime = getMillisecond() ;
var_dump($eTime-$sTime) ;

取三组数据:

记录 tcp pipe
1 29071 127
2 29540 143
3 29160 124

取平均数:tcp:29257.0毫秒 pipe:131.3毫秒

这次可以看出pipeling的绝对优势了!所以将互不影响的操作能够放到pipeling里能绝对的提升性能!

分享到:
为什么大型网站前端使用 PHP 后台逻辑用 ...
著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:黄良懿 链接:http://www.zhihu.com/question/20314377/answer/14801579 来源:知乎// 技术日新月异,回答放一段时间不更新会变味啊。 前两周参加完 ThinkInLamp 的 PHP 架构师大会,听鸟哥一上午的分享,感慨很多,PHP 业界虽然方向不...
PHP 7.0 安装使用与性能监测!
本人使用 Ubuntu 12.04 LTS,在网上已经找到 7.0 正式版的 ppa,所以不需要编译,使用如下命令可直接安装。 安装 PHP7.0与扩展 sudo add-apt-repository ppa:ondrej/php-7.0 sudo apt-get update sudo apt-get install php7.0-fpm php7.0-cli php7.0-common php7.0-json php7.0-mysql php7.0-opcache php7.0-curl由于 Me...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……