发布于 2015-11-09 14:39:52 | 1148 次阅读 | 评论: 0 | 来源: PHPERZ
Memcache 高性能分布式内存对象缓存系统
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
利用了memcached中 add()方法。
memcached:add($key) 成功时返回 TRUE, 或者在失败时返回 FALSE。 如果这个key已经存在返回FALSE。
利用add的原子性来判断是否需要执行业务代码。
/** * @param null $key * * @author 20779182@qq.com */ public function add_cache($key=null) { $memcacheClass = new Memcached(); $data = $memcacheClass->get($key); if(! $data) { do { $write_key = 'write'; if($memcacheClass->add($write_key, $write_key, 10 * 60)) { // 加锁成功,执行业务操作 $data = $model->get(); $memcacheClass->set($key, $data, 30 * 60); // 将数据存入缓存 $memcacheClass->delete($write_key); $is_retry = false; } else { // 如果加锁不成功,等待一段时间之后重试 sleep(10); $is_retry = true; } } while($is_retry); } }