这一次研究和学习,仅仅是自我研究,若有问题,请在评论指出,毕竟我也是刚学redis和研究redis的性能。
模拟环境:window
开发语言:php5.6(tp5)
内存数据库:redis
数据库:mysql
场景模拟,模拟1000人同时访问同一个页面
//访问同一个数据1000次的时间 平均时间为2.1S
/* for($i=0;$i<1000;$i++)
{
Users::find(['user_id'=>1]);
}*/
//该处是单例模式 平均时间为0.3S
/* for($i=0;$i<1000;$i++)
{
if(!Redis::getInstance()->get('user_1'))
{
Users::find(['user_id'=>1]);
Redis::getInstance()->set('user_1',1);
}else
{
Redis::getInstance()->get('user_1');
}
}*/
//对象模式 平均时间为6.6S
/*for($i=0;$i<1000;$i++)
{
$obj = new Redis();
if(!$obj->get('user_1'))
{
Users::find(['user_id'=>1]);
$obj->set('user_1',1);
}else
{
$obj->get('user_1');
}
}*/
由此得出:在普通开发的情况下,使用redis去访问数据库会比普通访问数据库会快上10倍左右,但这需要是在单例模式下进行访问。
优先级:单例模式下redis > 普通访问 > 对象模式访问redis
因为在对象映射模式中每次实例化对象需要耗费很多内存资源,导致其访问的速度变慢。
而在单例模式下访问数据库,仅仅是实例一次即可进行操作,所以在内存资源中比较快。
值得注意的是,每一次测试不同模式访问时,记得要更换一下获取的键值哦!@。@