当前位置:网站首页>Laravel 实现redis分布式锁
Laravel 实现redis分布式锁
2022-08-04 23:06:00 【陈卿诺语】
Redis几种架构
Redis发展到现在,几种常见的部署架构有:
单机模式;
主从模式;
哨兵模式;
集群模式;
从分布式锁的角度来说, 无论是单机模式、主从模式、哨兵模式、集群模式,其原理都是类同的。 只是主从模式、哨兵模式、集群模式的更加的高可用、或者更加高并发。
所以,接下来先基于单机模式,基于Jedis手工造轮子实现自己的分布式锁。
首先看两个命令:
Redis分布式锁机制,主要借助setnx和expire两个命令完成。
setnx命令:
SETNX 是SET if Not eXists的简写。将 key 的值设为 value,当且仅当 key 不存在; 若给定的 key 已经存在,则 SETNX 不做任何动作。
下面为客户端使用示例:
127.0.0.1:6379> set lock "unlock"
OK
127.0.0.1:6379> setnx lock "unlock"
(integer) 0
127.0.0.1:6379> setnx lock "lock"
(integer) 0
127.0.0.1:6379> expire命令:
expire命令为 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除. 其格式为:
EXPIRE key seconds
下面为客户端使用示例:
127.0.0.1:6379> expire lock 10
(integer) 1
127.0.0.1:6379> ttl lock
8 $lock = Redis::setnx('cqny',5,1);
if(!$lock) return $this->apiError('操作太频繁了');
Redis::expire('cqny',10); $block = Cache::lock("GoodLock",10); //返回一个redis对象
if ($block){
// Todo 业务逻辑
sleep(10);
echo "业务逻辑<br>";
$block->release(); // 释放锁
return "秒杀成功";
}
return 12;
$suo = Redis::set('123',123,"nx","ex",5);
if ($suo) Redis::del('123');
边栏推荐
- Literature reading ten - Detect Rumors on Twitter by Promoting Information Campaigns with Generative Adversarial Learn
- 3年,从3K涨薪到20k?真是麻雀啄了牛屁股 — 雀食牛逼呀
- [Paper Notes KDD2021] MixGCF: An Improved Training Method for Graph Neural Network-based Recommender Systems
- 【3D建模制作技巧分享】zbrush贴图映射小技巧
- 逆序对的数量
- 365天深度学习训练营-学习线路
- 历史上的今天:PHP公开发布;iPhone 4 问世;万维网之父诞生
- 一点点读懂regulator(二)
- Deep Learning RNN Architecture Analysis
- kernel问题定位手段总结
猜你喜欢
随机推荐
从“草原牛”到“数字牛”:蒙牛的数字化转型之道
【3D建模制作技巧分享】ZBrush模型制作流程:地精
【游戏建模模型制作全流程】ZBrush蜥蜴模型雕刻教程
SQL Server calls WebService
【游戏建模模型制作全流程】在ZBrush中雕刻恶魔城男性角色模型
The Go Programming Language (Introduction)
智慧养老整体解决方案
typeScript-promise
Literature reading ten - Detect Rumors on Twitter by Promoting Information Campaigns with Generative Adversarial Learn
JVM memory configuration parameter GC log
线上虚拟展馆展示具有哪些优势
【字符串函数内功修炼】strcpy + strcat + strcmp(一)
To Offer | 03. Repeat Numbers in the array
If you can't get your heart, use "distributed lock" to lock your people
js中小数四则运算精度问题原因及解决办法
特征工程资料汇总
DREAMWEAVER8 part of the problem solution
PID控制器改进笔记之七:改进PID控制器之防超调设定
一点点读懂cpufreq(一)
一点点读懂regulator(四)









