在处理高并发的情况下,会出现重复新增或者更新的情况。可以使用redis实现锁避免重复新增或者更新的情况
<?php class lock{ //连接redis static public function redis (){ $redis=new Redis(); $redis->connect('host','port') or die('Con not content redis'); if($redis){ return $redis; }else{ die('can not connectted to redis'); } } //加锁 public function lock($key,$expire=5){ $redis=self::redis(); $is_lock=$redis->setnx($key,time()+$expire); if(!$is_lock){ $lock_time=$redis->get($key); //锁已过期,重置 if($lock_time<time()){ $this->unlock($key); $is_lock=$redis->setnx($key,time()+$expire); } } return $is_lock ? true : false; } // 释放锁 public function unlock($key){ $redis=self::redis(); return $redis->del($key); } }