米
心情
所有
图集
登录
搜索
原创
(原生)一个简单的redis锁
恰好心动
发布于:2021-08-18
这里是原生的一个简单的锁,后续需要更多的优化,大家可以参考。 ``` <?php class RedisLock{ private $redis; public function __construct() { $this->redis = $this->connect(); } public function connect() { try { $redis = new Redis(); $redis->connect("127.0.0.1","6379","4"); $redis->auth(''); //设置密码 $redis->select("1"); return $redis; }catch (Exception $exception){ return false; } } /** * @param $key 锁标识【唯一】 * @param $expire 锁过期时间 秒 */ public function lock($key,$expire) { $lock = $this->redis->setnx($key,time()+$expire); if(!$lock){ $lock_time = $this->redis->get($key); if(time() > $lock_time){ //解锁 $this->unlock($key); $lock = $this->lock($key,time()+$expire);//延迟锁的时间 } } return $lock?true:false; } /** * 解锁 * @param $key 锁标识【唯一】 */ public function unlock($key) { $this->redis->watch($key); //监听key变化 $this->redis->multi(); //开启事务 $this->redis->del($key); $this->redis->exec();//执行事务 } } // 使用 $mod = new RedisLock(); // 定义锁标识 $key = 'mylock'; // 获取锁 $is_lock = $mod->lock($key, 10); if($is_lock){ echo 'get lock success<br>'; echo 'do sth..<br>'; sleep(5); echo 'success<br>'; $mod->unlock($key); // 获取锁失败 }else{ echo 'request too frequently<br>'; } ```
注:原创不易,转载请注明出处(
https://micuu.com/new/2041.html
),本站所有资源来源于网络收集,如有侵权请联系QQ245557979进行清除。
最后修改与 2022-02-21
上一篇:
datagrip快速复制表结构到剪贴板
下一篇:
驱动人生也太不要脸了,我100M的带宽给
留言反馈
请先登录
问题反馈渠道,如有软件无法下载或者其他问题可反馈。【由于某种原因,目前留言不展示】
用户需要登录后才能留言反馈
立即留言
珍藏视频
10分钟高效燃脂
30天高效瘦脸操
5分钟缓解颈椎操
友人
微博
全民K歌
唱吧
今日头条
悠悠网
科技小锅盖
彼岸桌面
阮一峰
laravel社区
V2ex
掘金
更多>