Redis锁防止并发
来源:互联网 发布:苹果usb共享电脑网络 编辑:程序博客网 时间:2024/04/28 22:42
<?phpclass RedisLock{ protected $redis; protected $config = [ 'host'=>'127.0.0.1', 'port'=>'6379', 'timeout'=>'0', 'auth'=>'', 'reserved'=>null, 'retry_interval'=>100, ]; public function __construct($config = []){ $this->config = !empty($config)?array_merge($this->config,$config):$this->config; $this->redis = $this->connect($this->config); } public function lock($name,$expire=5){ $is_lock = $this->redis->setnx($name,time()+$expire);//判断是否已经设置,未设置的话同时设置,返回1,如果已经设置返回0 if(!empty($is_lock)){ $lock_time = $this->redis->get($name); if(time()>$lock_time){ $this->unlock($name); $is_lock = $this->redis->setnx($name,time()+$expire); } } return $is_lock?true:false; } public function unlock($name){ return $this->redis->del($name); } private function connect($config){ try{ $redis = new Redis(); $redis->connect($config['host'],$config['port'],$config['timeout'],$config['reserved'],$config['retry_interval']); if(!empty($config['auth'])){ $redis->auth($config['auth']); } }catch(RedisException $e){ throw new Exception($e->getMessage()); return false; } return $redis; }}$redisLock = new RedisLock();$lock = $redisLock->lock("test",10);if($lock){ echo 1111; $redisLock->unlock("test");}else{ echo 222;}?>
0 0
- Redis锁防止并发
- redis内存锁,PHP防止并发操作
- redis如何防止并发?
- 使用Redis计数器防止并发请求
- 使用Redis计数器防止并发请求
- Redis原子计数器incr,防止并发请求
- 使用redis计数器防止并发请求
- redis计数器,redis并发锁
- PHP使用redis防止大并发下二次写入
- Redis修改数据多线程并发—Redis并发锁
- redis并发问题 && 分布式锁
- redis 限制并发锁访问
- redis并发
- xml 防止并发处理
- 程序如何防止并发
- 防止并发处理
- 防止并发问题
- 如何防止高并发
- 用ctags自定义的生成规则, 自己生成了lua文件的tags
- 数据结构实验之排序五:归并求逆序数
- 常见排序算法
- ActiveMQ的应用实例
- IOS开发-导航栏相关设置
- Redis锁防止并发
- Eclipse详细设置护眼背景色和字体颜色并导出
- 穆迪:增长潜力和储蓄支撑印度的信用状况
- 微服务,我们如何与你相处
- web.xml配置详解之listener与context-param
- win10部署Python3和Python2
- android与html5的交互——数据库操作,UI操作,以及html5的localStorage、定位功能
- RxJAVA学习
- 航拍镜头网站