当前位置: 首页 > news >正文

深圳做企业网站公司重庆网络营销网站建设销售

深圳做企业网站公司,重庆网络营销网站建设销售,做网站域名多少钱,网页访问wordpress一,概念 在PHP中实现分布式锁通常可以使用数据库、缓存系统(如Redis)或者其他中央存储系统来保证在分布式系统中的数据一致性与同步。秒杀下单、抢红包等等业务场景,都需要用到分布式锁。 常规方案大概有七中 方案一:…

一,概念

在PHP中实现分布式锁通常可以使用数据库、缓存系统(如Redis)或者其他中央存储系统来保证在分布式系统中的数据一致性与同步。秒杀下单、抢红包等等业务场景,都需要用到分布式锁。

在这里插入图片描述
常规方案大概有七中
方案一:SETNX + EXPIRE
方案二:SETNX + value值是(系统时间+过期时间)
方案三:使用Lua脚本(包含SETNX + EXPIRE两条指令)
方案四:SET的扩展命令(SET EX PX NX)
方案五:SET EX PX NX + 校验唯一随机值,再释放锁
方案六: 开源框架~Redisson
方案七:多机实现的分布式锁Redlock
这里我采用方案三,加锁和根据判断解锁都需要保持原子性,所以使用Lua脚本

二、代码

<?phpclass RedisLock
{private $redis;private $lockKey;public function __construct($lockKey){$this->redis = new Redis();$this->redis->connect('127.0.0.1', 6379);$this->lockKey = $lockKey;}public function acquireLock(){// 设置锁的超时时间,防止死锁(在删除锁的时候有可能服务挂了,那这个锁就成了死锁,设置过期时间可以防止死锁)$expire = 10;// 生成一个唯一的标识符(可能会出现线程A代码未执行完,锁已经过期,这时候另外一个线程B就能拿到了锁,这时线程A执行完毕删除锁,如果没有当前线程唯一标识就会删除掉B已经拿到的锁)$identifier = uniqid();while (!$this->redis->set($this->lockKey, $identifier, ['NX', 'EX' => $expire])) {// 如果设置失败,等待一段时间后重试usleep(1000);}return $identifier;}public function releaseLock($identifier){// 释放锁,检查标识符是否匹配,确保只有持有锁的请求才能释放锁//这里的判断和删除锁需要保持原子性,所以使用Lua脚本来删除if ($this->redis->eval("if redis.call('get',KEYS[1]) == ARGV[1] then return redis.call('del',KEYS[1]) else return 0 end", [$this->lockKey, $identifier], 1)) {return true;}return false;}
}// 示例用法
$lock = new RedisLock('my_resource');// 尝试获取锁
$identifier = $lock->acquireLock();if ($identifier) {// 成功获取锁,执行需要同步的操作// 释放锁$lock->releaseLock($identifier);
} else {// 获取锁失败,处理冲突或重试逻辑echo "Failed to acquire lock\n";
}
http://www.yayakq.cn/news/265758/

相关文章:

  • 商城形式的网站需要多少钱小程序开发平台源代码下载
  • 广州网站制作长沙wordpress </a> </li> <li> <a href="/news/265755/">网站推广建设加盟深圳官网设计</a> </li> <li> <a href="/news/265754/">网站备案信息填写网站创建方法</a> </li> <li> <a href="/news/265752/">网站维护需要什么技能焦作北京网站建设</a> </li> <li> <a href="/news/265751/">西安门户网站建设公司哪家好美食网站建设书</a> </li> <li> <a href="/news/265749/">黑龙江建设教育网站如何知道一个网站是用什么做的</a> </li> <li> <a href="/news/265748/">比较好的logo设计网站新开传奇网站发布网站</a> </li> <li> <a href="/news/265747/">湖北平台网站建设哪家好做网站商城要注册什么公司</a> </li> <li> <a href="/news/265746/">网站开发设计选题背景php免费网站模板</a> </li> <li> <a href="/news/265745/">网站开发iso9001微网站制作速成法</a> </li> <li> <a href="/news/265744/">dedecms做网站视频新手做电商需要投资多少</a> </li> <li> <a href="/news/265743/">聊城做网站哪家好网站是如何建立的</a> </li> <li> <a href="/news/265742/">深圳品牌网站制作多少钱邯郸wap网站建设公司</a> </li> <li> <a href="/news/265741/">网站改版要注意什么申请注册网站域名.商城</a> </li> <li> <a href="/news/265740/">北京建设协会网站淘宝做代销在哪个网站上进货比较好</a> </li> <li> <a href="/news/265739/">济南川芎网站建设新手如何做自己的网站</a> </li> <li> <a href="/news/265738/">太原网站开发模板网络推广哪个好</a> </li> <li> <a href="/news/265737/">广州建设交易中心网站首页高雅大气有寓意的公司取名</a> </li> <li> <a href="/news/265736/">国外网站 网速慢怎么提高网站浏览量</a> </li> <li> <a href="/news/265733/">网站网格设计高端网站建设的网站</a> </li> <li> <a href="/news/265732/">网站外链发布重庆网站推广联系方式</a> </li> <li> <a href="/news/265730/">网站暂停怎么做宽城区建设局网站</a> </li> <li> <a href="/news/265729/">网站开发主要学些什么网页设计网站的分析</a> </li> <li> <a href="/news/265728/">网站编程零基础入门本地wordpress卸载</a> </li> <li> <a href="/news/265727/">怎么搭建自己的网站挣钱素颜网站建设</a> </li> <li> <a href="/news/265726/">网站设计学习网怎样建个人网站</a> </li> <li> <a href="/news/265725/">做阿里巴巴还是做网站好wordpress 在线生成app</a> </li> <li> <a href="/news/265724/">网站中文名江西网站建设技术</a> </li> <li> <a href="/news/265723/">建设银行网站用户名是什么韶关做网站需要多少钱</a> </li> </div> </article> </main> </div> </div> <aside id="secondary" class="widget-area sidebar"> <div class="widget widget_posts_thumbnail" style="margin-top:6px;"> <h2 class="widget-title">最新文章</h2> <ul> <li class="clear"> <a href="/news/371623/" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/营销型企业网站优点dz论坛怎么做视频网站" alt=" 营销型企业网站优点dz论坛怎么做视频网站" /> </div> </a> <div class="entry-wrap"> <a href="/news/371623/" rel="bookmark"> 营销型企业网站优点dz论坛怎么做视频网站</a> <div class="entry-meta">2025/9/16 22:08:15</div></div> </li> <li class="clear"> <a href="/news/371622/" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/网站创建流程登封做网站" alt=" 网站创建流程登封做网站" /> </div> </a> <div class="entry-wrap"> <a href="/news/371622/" rel="bookmark"> 网站创建流程登封做网站</a> <div class="entry-meta">2025/9/16 22:08:15</div></div> </li> <li class="clear"> <a href="/news/371621/" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/给个网站谢谢了蚌埠哪有做网站的" alt=" 给个网站谢谢了蚌埠哪有做网站的" /> </div> </a> <div class="entry-wrap"> <a href="/news/371621/" rel="bookmark"> 给个网站谢谢了蚌埠哪有做网站的</a> <div class="entry-meta">2025/9/16 22:08:15</div></div> </li> <li class="clear"> <a href="/news/371620/" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/安徽整站优化一个公司的网站怎么做的" alt=" 安徽整站优化一个公司的网站怎么做的" /> </div> </a> <div class="entry-wrap"> <a href="/news/371620/" rel="bookmark"> 安徽整站优化一个公司的网站怎么做的</a> <div class="entry-meta">2025/9/16 22:08:15</div></div> </li> <li class="clear"> <a href="/news/371619/" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/福山区建设工程质量检测站网站如何实现wordpress伪静态化" alt=" 福山区建设工程质量检测站网站如何实现wordpress伪静态化" /> </div> </a> <div class="entry-wrap"> <a href="/news/371619/" rel="bookmark"> 福山区建设工程质量检测站网站如何实现wordpress伪静态化</a> <div class="entry-meta">2025/9/16 22:08:15</div></div> </li> <li class="clear"> <a href="/news/371618/" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/企业网站公告怎么做怎么做一网站首页" alt=" 企业网站公告怎么做怎么做一网站首页" /> </div> </a> <div class="entry-wrap"> <a href="/news/371618/" rel="bookmark"> 企业网站公告怎么做怎么做一网站首页</a> <div class="entry-meta">2025/9/16 22:08:15</div></div> </li> </ul> </div> <div class="leftdiv2"> </div> </aside> </div> <footer id="colophon" class="site-footer"> <div class="clear"></div> <div id="site-bottom" class="clear"> <div class="container"> <div class="menu-m_footer-container"> <ul id="footer-menu" class="footer-nav"> <li> <strong> <a href="/">芽芽口腔健康站介绍</a></strong> </li> <li> <strong> <a href="/">商务合作</a></strong> </li> <li> <strong> <a href="/">免责声明</a></strong> </li> </ul> </div> <div class="site-info"> <p>CopyRight © <a href="/">芽芽口腔健康站</a>版权所有 </p> </div> </div> </div> </footer> </div> <div id="back-top"> <a href="#top" title="返回顶部"> <svg width="38" height="38" viewbox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect width="48" height="48" fill="white" fill-opacity="0.01" /> <path d="M24 44C35.0457 44 44 35.0457 44 24C44 12.9543 35.0457 4 24 4C12.9543 4 4 12.9543 4 24C4 35.0457 12.9543 44 24 44Z" fill="#3d4de6" stroke="#3d4de6" stroke-width="4" stroke-linejoin="round" /> <path d="M24 33.5V15.5" stroke="#FFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" /> <path d="M33 24.5L24 15.5L15 24.5" stroke="#FFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" /></svg> </a> </div> <script src='/templates/nzzt/js/common.js'></script> <script> $(function(){ $('.source_url').text('原文地址:https://blog.csdn.net/sang521jia/article/details/139629409'); }); /*$('.source_url').on("click",function() { window.open('https://blog.csdn.net/sang521jia/article/details/139629409', '_blank'); });*/ </script> </body> </html>