recherche
Maisonbase de donnéesRedisAnalyse des causes : double suppression retardée du cache Redis

Apprentissage recommandé : Tutoriel vidéo Redis

Pourquoi le cache est-il supprimé au lieu d'être mis à jour ?

S'il s'agit d'une mise à jour et qu'il y a un problème de transaction distribuée, le cache peut être modifié et la modification de la base de données peut échouer. Si vous supprimez simplement le cache, même si la modification de la base de données échoue, la requête suivante récupérera directement les données de la base de données et aucune donnée sale n'apparaîtra.

Qu'est-ce que la double suppression diffé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.

Adopter la méthode de preuve par contradiction

Supprimer uniquement en premier



Analyse des causes : double suppression retardée du cache Redis

Supprimer uniquement plus tard

Analyse des causes : double suppression retardée du cache Redis

Conclusion

Ainsi, on peut conclure qu'il y a des problèmes avec les deux pré-suppression et post-suppression. La stratégie de double suppression retardée est donc adoptée

Pensée 2 : Pourquoi est-elle retardée

C'est encore une preuve par contradiction. La situation dans l'image ci-dessous est une situation dans laquelle l'ancien cache existe toujours après une double suppression. Le délai consiste à garantir que les modifications du cache des autres transactions ont été terminées avant de modifier la base de données -> vider le cache.

Analyse des causes : double suppression retardée du cache Redis

Supplément : Pourquoi devrions-nous retarder la double suppression pour assurer la cohérence du cache ? : Il s'agit de garantir que pendant l'intervalle entre la modification des données de la base de données et la suppression des données Redis, s'il y a un succès, il est garanti que cela les données n'existent pas dans Redis. Sans cette suppression, lorsque les données de la base de données ont été modifiées, les anciennes données peuvent toujours être lues à partir de Redis, ce qui entraîne une incohérence des données. La deuxième suppression a lieu après la modification des données de la base de données. À ce stade, les données correspondantes dans redis doivent être à nouveau supprimées. Cette fois, il s'agit de supprimer les données entre la première suppression de redis et la modification des données de la base de données. est une demande, alors les anciennes données seront à nouveau supprimées. Elles seront remises en cache dans Redis, mais les données de la base de données seront ensuite modifiées. Si elles ne sont pas supprimées cette fois, les anciennes données de la base de données existeront dans. redis.

Alors pourquoi devez-vous retarder la suppression de Redis pendant un certain temps après la deuxième modification de la base de données ?

Afin d'attendre la lecture précédente de la base de données, attendez que les données soient écrites dans le cache, et enfin supprimez les données sales, c'est donc le moment où les données sont envoyées de la base de données au serveur + écriture du cache
  • Mais double suppression retardée, le délai est très difficile à déterminer, donc la double suppression retardée n'est pas recommandée
  • Selon des considérations globales, même si la base de données est d'abord modifiée, après la suppression du cache, il y a Il y aura une certaine période de temps pendant laquelle les anciennes données seront lues, ce qui est généralement tolérable.
  • Tant que le cache est supprimé à temps, les autres threads peuvent lire la dernière valeur.

Dans le même temps, afin de garantir que le cache sera supprimé, vous pouvez utiliser mq pour garantir que le cache sera supprimé Analyse des causes : double suppression retardée du cache Redis

Si le message n'est pas consommé à plusieurs reprises dans mq, il sera transmis à d'autres. consommateurs pour la consommation (le cache sera supprimé)

Apprentissage recommandé :

Tutoriel vidéo Redis

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!

Déclaration
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Comment changer de bureau redisComment changer de bureau redisApr 10, 2025 pm 08:54 PM

Pour changer les connexions Redis Desktop, effectuez les étapes suivantes: Ouvrez Redis Desktop et sélectionnez Connexion. Sélectionnez l'instance Redis à laquelle vous connecter. Entrez les informations de connexion (nom d'hôte, port, mot de passe). Cliquez sur Connexion. Redis Desktop se connecte à l'instance sélectionnée où vous pouvez gérer et accéder à la base de données.

Comment résoudre le problème de la haute disponibilité de redisComment résoudre le problème de la haute disponibilité de redisApr 10, 2025 pm 08:51 PM

Les méthodes pour résoudre le problème de la haute disponibilité redis sont: 1. Réplication maître-esclave; 2. Mode Sentinel; 3. Cluster Redis; 4. Réplication de la région croisée. Le choix spécifique dépend des exigences telles que la haute disponibilité, l'évolutivité, la vitesse de basculement ou le déploiement de la région croisée.

Comment lire la base de données avec redisComment lire la base de données avec redisApr 10, 2025 pm 08:48 PM

Il existe trois façons de lire une base de données via Redis: utilisez la commande EVAL pour se connecter directement à la base de données et exécuter les requêtes. Utilisez Redis Pub / Sub pour créer un canal, et les résultats de la requête sont publiés par la base de données, et le client Redis y souscrit. Utilisez Redis Streams pour créer un flux qui reçoit des données de la base de données, le serveur Redis écrit les résultats de la requête au flux et le client lit les données du flux.

Comment utiliser la commande redisComment utiliser la commande redisApr 10, 2025 pm 08:45 PM

L'utilisation de la directive Redis nécessite les étapes suivantes: Ouvrez le client Redis. Entrez la commande (Verbe Key Value). Fournit les paramètres requis (varie de l'instruction à l'instruction). Appuyez sur Entrée pour exécuter la commande. Redis renvoie une réponse indiquant le résultat de l'opération (généralement OK ou -err).

Que faire si la mémoire redis est pleineQue faire si la mémoire redis est pleineApr 10, 2025 pm 08:42 PM

Méthodes pour gérer la mémoire redis complète: Politique d'élimination: volatile-lru, volatile-ttl, allkeys-lru, allKeys-random tourne maxmemory pour permettre à la mémoire obsolète: config définir maxmememory-politique noviction manuellement delete les données peuvent provoquer la perte de données, la perte de données. Veuillez peser les avantages et les inconvénients avant de mettre en œuvre une politique et de surveiller régulièrement l'utilisation de la mémoire.

Comment utiliser Redis LockComment utiliser Redis LockApr 10, 2025 pm 08:39 PM

L'utilisation des opérations Redis pour verrouiller nécessite l'obtention du verrouillage via la commande setnx, puis en utilisant la commande Expire pour définir le temps d'expiration. Les étapes spécifiques sont les suivantes: (1) Utilisez la commande setnx pour essayer de définir une paire de valeurs de clé; (2) Utilisez la commande Expire pour définir le temps d'expiration du verrou; (3) Utilisez la commande del pour supprimer le verrouillage lorsque le verrouillage n'est plus nécessaire.

Comment le Redis Sentinel a-t-il coopéréComment le Redis Sentinel a-t-il coopéréApr 10, 2025 pm 08:36 PM

Redis Sentinel atteint la haute disponibilité en coordonnant les travaux pour surveiller et gérer les instances Redis. Les tâches clés comprennent: la surveillance du leader électoral des instances effectue des modifications de configuration de traitement de basculement que les sentinelles communiquent via le protocole de potins. Pour une collaboration optimale, il est recommandé de déployer au moins trois instances Sentinel, de sélectionner différents hôtes et de les surveiller.

Comment régler le compteur redisComment régler le compteur redisApr 10, 2025 pm 08:33 PM

Le compteur Redis est créé par la commande augmen et sera automatiquement initialisé à 0 s'il n'existe pas. La valeur du compteur peut être obtenue via la commande get et le compteur est incrémenté et décrémenté en utilisant respectivement les commandes incr et de diminution.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP