Eindeutiger Code der Benutzerregistrierung redis Lock-Limit

// $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);
        }

Supongo que te gusta

Origin blog.csdn.net/hechenhongbo/article/details/121930523
Recomendado
Clasificación