浅谈对CACHE操作的封装及最佳实践

作为WEB开发者,CACHE对我们来说是再熟悉不过了。但是,你真的有研究如何把它用得更“优雅”吗?下面以较常见的Memcache为例,谈谈对CACHE操作的几种常见封装方法,并推荐一种我认为最佳的实践。如果你有更好的解决方案,请不吝赐教:)

为什么要封装?

$mc = new Memcached();
$mc->addServers('127.0.0.1', 11211);
$key = 'test';
$duration = 3600;
$value = $mc->get($key);
if ($mc->getResultCode() == Memcached::RES_NOTFOUND) {
    $value = getValueFromDB();
    $mc->set($key, $value, $duration);
}

第一次使用CACHE的同学,往往会写出上面的代码。简陋且有效,拿来写个Hello World是再合适不过了,但是真正在项目中使用CACHE的时候,还这么写就太low了。没有异常处理和重试机制、不能做负载均衡,大量的重复代码……当你受不了维护之繁琐时,就会想办法来解决这些问题,那就是封装。 Continue reading 浅谈对CACHE操作的封装及最佳实践