这个问题的标题不是那么清楚,但代码和问题很简单.
假设我想每天向用户展示一次广告.为了实现这一点,每次他们访问我网站上的页面时,都会检查某个memcache密钥是否存储了任何数据.如果是这样,请勿展示广告.如果没有,请将值"1"存储在该密钥中,到期时间为86400.
我可以用两种方式做到这一点:
//version a
$key='OPD_'.date('Ymd').'_'.$type.'_'.$user;
if($memcache->get($key)===false){
$memcache->set($key,'1',false,$expire);
//show ad
}
//version b
$key='OPD_'.date('Ymd').'_'.$type.'_'.$user;
if($memcache->add($key,'1',false,$expire)){
//show ad
}
Run Code Online (Sandbox Code Playgroud)
现在,似乎很明显b更好,它总是进行1个memcache调用.但是,"添加"与"获取"的开销是多少?这些并不是真正的比较...而我只是编写了这些数字,但是假设1加〜= 1集〜= 5得到努力,平均用户每天查看5页:
a: (5 get * 1 effort) + (1 set * 5 effort) = 10 units of effort
b: (5 add * 5 effort) = 25 units of effort
Run Code Online (Sandbox Code Playgroud)
总是进行添加呼叫会有意义吗?这是不必要的微优化吗?