Assurer la cohérence des doubles écritures entre MySQL et Redis
1. Scénario :
La cohérence en double écriture signifie que lorsque nous mettons à jour les données dans la base de données, les données dans Redis doivent également être mises à jour de manière synchrone. Le processus de lecture des données à l'aide de redis Lorsque l'utilisateur accède aux données, les données seront d'abord lues à partir du cache. Si le cache est atteint, les données dans le cache seront directement renvoyées à l'utilisateur. le cache, la base de données sera d'abord interrogée et enregistrera les données interrogées dans le cache, puis les renverra à l'utilisateur.
2. Stratégie pour assurer la cohérence de la double écriture
1 Mettez d'abord à jour le cache, puis mettez à jour la base de données
2 Mettez d'abord à jour la base de données, puis mettez à jour le cache
3. mettre à jour la base de données
4, Mettez d'abord à jour la base de données, puis supprimez le cache
Troisièmement, les avantages et les inconvénients des quatre stratégies
1. Mettez d'abord à jour le cache, puis mettez à jour la base de données
Le problème est évident. Si la mise à jour du cache réussit mais que la mise à jour de la base de données échoue, le cache sera endommagé. Données sales
2 Mettez d'abord à jour la base de données, puis mettez à jour le cache
Si la concurrence est élevée, la situation suivante peut exister. Le thread A a mis à jour la base de données. Si le thread A n'a pas mis à jour la base de données pour des raisons de réseau ou pour d'autres raisons, il est encore temps de mettre à jour le cache. À ce stade, un processus B met à jour la base de données et met à jour le cache. processus A met à jour le cache. À ce moment-là, la mise à jour du cache par le thread B sera perdue, comme dans une situation de perte de transaction
3 Supprimez d'abord le cache, puis mettez à jour la base de données
Cette stratégie a peut-être évité la perte de cache. dans la stratégie 2, mais quel que soit le niveau de concurrence, il y aura des incohérences. Par exemple, le thread A effectue une opération d'écriture. Tout d'abord, supprimez le cache et préparez-vous à mettre à jour la base de données. et n'atteint pas le cache. Ensuite, il interroge la base de données. À ce moment-là, il lit l'ancienne valeur et enregistre l'ancienne valeur interrogée dans le cache. Puis le thread A Une fois la mise à jour de la base de données terminée, la base de données et le cache sont à nouveau incohérents. Solution : Il suffit de re-threader A. Après avoir terminé la mise à jour de la base de données, supprimez à nouveau le cache avec un léger retard, également appelé double suppression retardée. Le temps de retard doit ici être supérieur au temps d'une opération de lecture de l'entreprise.
4. Mettez d'abord à jour la base de données, puis supprimez le cache
Peu importe le niveau de concurrence, il y aura des incohérences. Par exemple, le thread A lit des données et lorsqu'il se prépare à écrire dans le cache, le thread B met à jour La base de données est accédée, puis le cache est supprimé. À ce moment, le thread A écrit l'ancienne valeur dans le cache, bien que la probabilité que cela se produise soit relativement faible, car l'opération d'écriture prend plus de temps qu'une opération de lecture. Solution : Double suppression retardée La double suppression retardée est toujours un problème. Que dois-je faire si la suppression du cache échoue. Bien sûr, supprimez-le à nouveau et continuez la suppression en boucle ? Après l'échec de la suppression, nous pouvons mettre la clé à supprimer dans la file d'attente, puis essayer de la supprimer à plusieurs reprises jusqu'à ce que la suppression réussisse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pour ajouter une clé primaire à une table existante, utilisez l'instruction altertable avec la clause AddPrimaryKey. 1. Assurez-vous que la colonne cible n'a pas de valeur nulle, pas de duplication et est définie comme notnull; 2. La syntaxe de clé primaire à colonne unique est le nom de table altertable addPrimaryKey (nom de colonne); 3. La syntaxe de la clé primaire de combinaison multi-colonnes est le nom de table altertable addPrimaryKey (colonne 1, colonne 2); 4. Si la colonne permet Null, vous devez d'abord exécuter Modify pour définir Notnull; 5. Chaque tableau ne peut avoir qu'une seule clé primaire et l'ancienne clé primaire doit être supprimée avant d'ajouter; 6. Si vous avez besoin de l'augmenter vous-même, vous pouvez utiliser Modify pour définir Auto_Increment. Assurer les données avant le fonctionnement

L'utilisation de MySQLDump est le moyen le plus courant et le plus efficace de sauvegarder les bases de données MySQL. Il peut générer des scripts SQL contenant la structure et les données de la table. 1. La syntaxe de base est: mysqldump-u [nom d'utilisateur] -p [nom de base de données]> backup_file.sql. Après l'exécution, entrez le mot de passe pour générer un fichier de sauvegarde. 2. Sauvegardez plusieurs bases de données avec - Databases Databases: MySQLDump-Uroot-P --Databasesdb1db2> multiple_dbs_backup.sql. 3. Sauvegarder toutes les bases de données avec - toutes les données: MySqlDump-Uroot-P

L'ordinateur invite "MSVCP71.DLL est absent de l'ordinateur", ce qui est généralement dû au fait que le système manque de composants en cours d'exécution, ce qui fait que le logiciel ne charge pas normalement. Cet article analysera profondément les fonctions du fichier et la cause profonde de l'erreur, et fournira trois solutions efficaces pour vous aider à restaurer rapidement le programme à exécuter. 1. Qu'est-ce que msvcp71.dll? MSVCP71.DLL appartient au fichier de bibliothèque d'exécution de base de Microsoft Visualc 2003 et appartient au type de bibliothèque de liens dynamiques (DLL). Il est principalement utilisé pour prendre en charge les programmes écrits en C pour appeler les fonctions standard, les modèles STL et les modules de traitement de base de données. De nombreuses applications et jeux classiques développés au début des années 2000 reposent sur ce fichier à exécuter. Une fois le fichier manquant ou corrompu,

B-TreeIndexesAreBestFormostPhpapplications, AstheySupportequality andRangequeries, Tri, andareIdEalforColumnSuseInwhere, Join, OrorderByClauses; 2.Full-TextIndexessHouldFornaturAralLanguageorBooleanSearSonTextFieldslikeArlesorProductDescriptiiReScriptidScriptidiansearchesEnTextFieldslikeArlesorProductDescripti

UnionRemoveS aduplicate WhiceUnionAllkeepSallRowscludedingDuplications; 1. UnionPerformsDeduplication gysortingand comparingrows, retournantonylyuqueRereSults, qui fait que la doseur de solutionnaliques;

Vous pouvez personnaliser le séparateur en utilisant le mot-clé séparateur dans la fonction group_concat (); 1. Utilisez le séparateur pour spécifier un séparateur personnalisé, comme le séparateur '; «Le séparateur peut être changé pour un semi-colon et plus d'espace; 2. Les exemples courants incluent l'utilisation du caractère de tuyau '|', de l'espace '', du caractère de rupture de ligne '\ n' ou de la chaîne personnalisée '->' comme séparateur; 3. Notez que le séparateur doit être une chaîne littérale ou expression, et la longueur du résultat est limitée par la variable Group_Concat_Max_Len, qui peut être ajustée par setSessionGroup_Concat_Max_Len = 10000; 4. Le séparateur est facultatif

TheinOperatorInmysqlCheckSifavAlueMatcheSanyInaspeCifiedList, simplifier les éléments detins;

La table peut être verrouillée manuellement à l'aide de Locktables. Le verrouillage de lecture permet à plusieurs sessions de lire mais ne peut pas être écrite. Le verrouillage d'écriture fournit des autorisations de lecture et d'écriture exclusives pour la session en cours et d'autres sessions ne peuvent pas lire et écrire. 2. Le verrou est uniquement pour la connexion actuelle. L'exécution de StartTransaction et d'autres commandes libéreront implicitement le verrou. Après le verrouillage, il ne peut accéder qu'à la table verrouillée; 3. N'utilisez-le que dans des scénarios spécifiques tels que la maintenance de la table Myisam et la sauvegarde des données. INNODB devrait donner la priorité à l'utilisation de verrous de transaction et au niveau des lignes telles que Select ... ForupDate pour éviter les problèmes de performances; 4. Une fois l'opération terminée, les déverrouillage doivent être explicitement libérés, sinon un blocage des ressources peut se produire.
