博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用memcached实现并发时候,设置缓存锁
阅读量:5884 次
发布时间:2019-06-19

本文共 846 字,大约阅读时间需要 2 分钟。

hot3.png

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

转载于:https://my.oschina.net/liuke1556/blog/528133

你可能感兴趣的文章
增强myEclipse的提示功能
查看>>
Zabbix汉化方法
查看>>
Java I/O系统基础知识
查看>>
Java多线程设计模式(2)生产者与消费者模式
查看>>
对象并不一定都是在堆上分配内存的
查看>>
刘宇凡:罗永浩的锤子情怀只能拿去喂狗
查看>>
php晚了8小时 PHP5中的时间相差8小时的解决办法
查看>>
JS(JavaScript)的初了解7(更新中···)
查看>>
svn文件管理器的使用
查看>>
Ansible playbook 使用
查看>>
for/foreach/linq执行效率测试
查看>>
js /jquery停止事件冒泡和阻止浏览器默认事件
查看>>
长春理工大学第十四届程序设计竞赛(重现赛)I.Fate Grand Order
查看>>
好作品地址
查看>>
[翻译]Protocol Buffer 基础: C++
查看>>
runloop与线程的关系
查看>>
[Bzoj2246]迷宫探险(概率+DP)
查看>>
详解消息队列的设计与使用
查看>>
使用Sqoop从mysql向hdfs或者hive导入数据时出现的一些错误
查看>>
控制子窗口的高度
查看>>