php - 本地测试读取redis和普通文件缓存的速度,redis慢一倍?
迷茫
迷茫 2017-04-10 17:49:56
[PHP讨论组]

  本地电脑测试读取redis和普通文件缓存的速度,分别连续读取缓存文件1次、1千次、1万次,缓存内容大小40KB,redis读取速度总比文件缓存速度慢一倍。如果确实如此,是不是在低并发情况下file缓存方式更快点呢?还是我的测试方式有误?

<?php
//redis缓存,读1万次约1.344396秒
$t1 = microtime(true);
$redis = new Redis();
$redis->connect("127.0.0.1","6379");
$redis->auth('123456');
for($i=0;$i<10000;$i++){
    $redis->get("test");
}
echo  round(microtime(true)-$t1,6);
exit;
?>
<?php
//文件缓存,读取1万次约0.635125秒
$t1 = microtime(true);

for($i=0;$i<10000;$i++){
    $html = file_get_contents('testfile.php');
}
echo  round(microtime(true)-$t1,6);
exit;
?>
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(5)
PHPz

重新测试了,换成了Linux服务器,php5.6,512内存。连续读取1千次不同的文件(每个文件41KB),redis也是1千个不同的key,文件缓存还是比redis快!

但是,但是,后来我换成连续读取1万个不同的文件,文件缓存方式耗时30秒,二redis竟然只需0.7秒。看来文件缓存只适合小数据小并发,大并发下还是redis好很多

黄舟

你这个测试方法不对,你应该每次读取key的值和读取不通的文件,
你现在这个测试方法文件已经被cache了。 测试不出差别的。

伊谢尔伦

首先你在什么系统下做测试的?

迷茫

如果只有一个key直接内存更快呢。。如果key来个百万级你试试看,是文件块还是redis快。

PHP中文网

楼主你的测试方法不对。因为linux下有种机制,是缓存从硬盘读取的数据到内存。也就是说,你虽然使用file_get_content 读取文件数据,但是linux系统不会去硬盘给你拿数据,而是在内存中给你数据。所以为什么会比redis快

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号