Название этого вопроса не так понятно, но код и вопрос просты.
Допустим, я хочу показывать своим пользователям рекламу один раз в день. Для этого каждый раз, когда они посещают страницу на моем сайте, я проверяю, хранятся ли на определенном ключе memcache какие-либо данные. Если это так, не показывать рекламу. Если нет, сохраните значение «1» в этом ключе с истечением 86400.
Я могу сделать это 2 способами:
//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
}
Теперь может показаться очевидным, что 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
Имеет ли смысл всегда делать вызов add? Это ненужная микрооптимизация?