Il existe un système de requête. Lorsque l'utilisateur interroge, s'il n'y a pas de données dans la base de données, il doit appeler une interface de requête tierce pour obtenir les données, puis insérer les données dans la base de données, puis récupérer les données. données de la base de données et les renvoyer à l'utilisateur. [Le système est développé sur la base de PHP]
Si plusieurs utilisateurs effectuent une requête, plusieurs requêtes seront adressées simultanément à l'interface tierce et le problème de l'insertion répétée des données se posera.
Comment résoudre ce problème ?
Lors de l'appel d'une interface tierce, utilisez Redis
pour vous assurer qu'une seule requête est envoyée au tiers, évitant ainsi les requêtes répétées et l'insertion de données. méthode? ? Comment y parvenir concrètement ?
Merci !
Mécanisme de verrouillage. Avant que le code n'entre dans l'opération, vérifiez si l'opération est verrouillée. Si elle est verrouillée, interrompez l'opération. Sinon, passez à l'opération suivante. La première étape consiste à verrouiller l'opération, puis à exécuter le code. Après avoir exécuté le code, n'oubliez pas de déverrouiller le verrouillage de l'opération. Sinon, vous ne pourrez pas procéder à l’exécution.
Il existe de nombreux codes de verrouillage, et celui indiqué ci-dessus en fait partie. Les fichiers Redismemcachecache peuvent être utilisés si la concurrence des opérations est relativement élevée, il est recommandé d'utiliser redis comme celui ci-dessus. (En fait, il s'agit d'utiliser le type de données chaîne pour attribuer une valeur à la clé de verrouillage {lock}, et lors du déverrouillage, la valeur de la clé sera effacée ou affectée d'une valeur de 0)
Le « verrouillage » redis mentionné par l'affiche est bien sûr réalisable
?De plus, un identifiant unique peut-il être défini pour les données interrogées. Il s'agit d'une double vérification