码迷,mamicode.com
首页 > 系统相关 > 详细

利用memcached实现并发时候,设置缓存锁

时间:2015-11-09 19:25:28      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:

利用了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);
    }
}


利用memcached实现并发时候,设置缓存锁

标签:

原文地址:http://my.oschina.net/liuke1556/blog/528133

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!