// $redis = \Yii::$app->redis; // $no_queue_key = 'user_no_list'; // $getnoListRedis = $redis->rpop($no_queue_key); // if(empty($getnoListRedis)){ // $no = No::find()->where(['uid' => 0])->limit(100)->all(); // foreach($no as $_v){ // $res = $redis->lpush($no_queue_key,$_v->no); // } // $getnoListRedis = $redis->rpop($no_queue_key); // } //dd($getnoListRedis); // 循环取no while($no = No::find()->where(['uid' => 0])->limit(1)->one()){ $key = 'allocateNo:lockKey:'. $no->id; // 如果上锁成功,取到数据,退出循环 if(\Yii::$app->redis->setnx($key,'1')){ //确定没锁后先赋值redis,锁上先 \Yii::$app->redis->expire($key, 30); //设置锁的时间,具体看自己的业务场景,一般一个接口请求不超过60秒 break; } // 否则等 100 毫秒 usleep(100); }
用户注册唯一码redis加锁限制
猜你喜欢
转载自blog.csdn.net/hechenhongbo/article/details/121930523
今日推荐
周排行