Lors de la mise à jour des données, vous pouvez rencontrer des problèmes de transactions distribuées, entraînant la réussite des mises à jour du cache mais l'échec des modifications de la base de données. Même si la modification de la base de données échoue et que seul le cache est supprimé, la requête suivante obtiendra toujours les données directement de la base de données et aucune donnée sale ne sera générée.
C'est-à-dire que lors de l'ajout, de la suppression ou de la modification d'une classe d'entité, le cache de la classe d'entité doit être vidé. La position d'effacement est avant et après la méthode de fonctionnement de la base de données.
Supprimez uniquement en premier
Supprimez uniquement plus tard
Ainsi, nous pouvons conclure qu'il existe des problèmes à la fois avec la pré-suppression et la post-suppression. La stratégie de double suppression retardée est donc adoptée
C'est encore une preuve par contradiction. La situation dans la figure ci-dessous montre la situation dans laquelle l'ancien cache existe toujours après une double suppression. Le délai consiste à garantir que les opérations de changement de cache des autres transactions sont terminées avant de modifier la base de données -> vider le cache.
Supplémentaire : Pourquoi devrions-nous retarder la double suppression pour garantir la cohérence du cache
Pourquoi devrions-nous retarder la double suppression pour garantir la cohérence du cacheCependant, le délai de double suppression retardée est très difficile à déterminer, donc la double suppression retardée n'est pas recommandéeSelon des considérations globales, même si la base de données est d'abord modifiée, après la suppression le cache, il y aura une certaine période de temps pendant laquelle les anciennes données seront lues. Ceci est généralement toléré.
Tant que le cache est supprimé à temps, les autres threads peuvent lire la dernière valeur.
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!