Maison  >  Article  >  base de données  >  Comment synchroniser le cache Redis avec la base de données

Comment synchroniser le cache Redis avec la base de données

(*-*)浩
(*-*)浩original
2019-11-02 12:00:535415parcourir

Cohérence entre les données mises en cache et les données persistantes, cette problématique est résumée (j'ai vu un bon article de blog), c'est en fait de la lecture et de l'écriture, et il y a aussi la problématique de qui vient en premier et qui vient dernier .

Comment synchroniser le cache Redis avec la base de données

Théoriquement, fixer un délai d'expiration pour le cache est une solution pour assurer une cohérence éventuelle. Avec cette solution, nous pouvons définir le délai d'expiration des données stockées dans le cache. Toutes les opérations d'écriture sont soumises à la base de données, et nous devons uniquement faire de notre mieux pour les opérations de cache. (Apprentissage recommandé : Tutoriel vidéo Redis) ​

C'est-à-dire que si l'écriture de la base de données réussit et que la mise à jour du cache échoue, alors tant que le délai d'expiration est atteint, les demandes de lecture ultérieures liront naturellement les nouvelles valeurs de la base de données et rempliront le cache. .

Redis est une base de données clé-valeur hautes performances. L'émergence de Redis a largement compensé les défauts du stockage clé-valeur tel que Memcached, et peut jouer un très bon rôle complémentaire aux bases de données relationnelles dans certaines situations. Il fournit des clients Python, Ruby, Erlang et PHP, très pratiques à utiliser.

Selon notre utilisation générale de Redis, le scénario devrait ressembler à ceci :

Comment synchroniser le cache Redis avec la base de données

En d'autres termes : nous irons à redis Déterminez d'abord si les données existent. Si elles existent, renvoyez directement les données mises en cache. S'il n'existe pas, il accédera à la base de données, lira les données et mettra les données en cache dans Redis.

Occasions applicables : si la quantité de données est relativement importante, mais qu'elles ne sont pas mises à jour fréquemment (comme les classements des utilisateurs)

L'utilisation du deuxième type de Redis est complétée par la première situation Différent, veuillez voir la situation spécifique :

Comment synchroniser le cache Redis avec la base de données

Ici, nous allons d'abord aller à redis pour déterminer si les données existent, et si elles existent, mettre directement à jour les données correspondantes (cette étape La clé mise à jour correspondante sera enregistrée, par exemple, elle sera également enregistrée dans redis. Par exemple : la clé est : save_update_keys [enregistrée avec lpush list]), et les données mises à jour seront renvoyées au page. S'il n'existe pas, le contenu de la base de données sera d'abord mis à jour, puis une copie des données sera enregistrée dans Redis.

Étape NO10 : Travail ultérieur : Il y aura des mécanismes pertinents en arrière-plan pour lire les clés stockées dans save_update_keys dans Redis respectivement, trouver les données correspondantes et les mettre à jour dans la base de données.

Avantages : L'objectif principal de ce processus est d'utiliser Redis comme base de données, et la mise à jour et la récupération des données sont plus rapides que DB. Il est très adapté aux changements fréquents de grandes quantités de données (comme Weibo).

Inconvénients : Il s'appuie fortement sur Redis, il est donc nécessaire de sauvegarder les données pendant les temps d'arrêt. (Cependant, vous pouvez utiliser l'instantané AOF de Redis. Si vous récupérez rapidement, cela ne devrait pas avoir beaucoup d'impact, car même si Redis cesse de fonctionner, cela n'affectera pas le traitement ultérieur des données.)

Difficulté : planifier la clé dans le format et le type de stockage à un stade précoce sont importants car ils affecteront la synchronisation des données avec la base de données.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn