// $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); // Schleife um Nr. zu übernehmen while($no = No::find()->where(['uid' => 0])->limit(1)->one()){ $key = 'allocateNo:lockKey:'. $no->id; // Wenn die Sperre erfolgreich ist, rufe die Daten ab und verlasse die Schleife if(\Yii::$app->redis->setnx($key,'1')){ // Nachdem Sie bestätigt haben, dass es keine Sperre gibt, weisen Sie zuerst Redis zu und sperren Sie es zuerst \Yii::$app->redis->expire($key, 30); //Stellen Sie die Sperrzeit ein, abhängig von Ihrem Geschäftsszenario, im Allgemeinen dauert eine Schnittstellenanfrage nicht länger als 60 Sekunden brechen; } // andernfalls 100 Millisekunden warten schlafen (100); }
Eindeutiger Code der Benutzerregistrierung redis Lock-Limit
Supongo que te gusta
Origin blog.csdn.net/hechenhongbo/article/details/121930523
Recomendado
Clasificación