web-dev-qa-db-fra.com

Comment mettre à jour redis après la mise à jour de la base de données?

Je mets en cache certaines données dans redis et je lis les données de redis si elles existent, sinon je lis les données de la base de données et j'écris les données dans redis.

Je trouve qu'il existe plusieurs façons de mettre à jour redis après la mise à jour de la base de données. Par exemple:

  1. définir les clés dans redis à expiré
  2. mettre à jour redis immédiatement après la mise à jour de la base de données.
  3. mettre des données dans MQ et utiliser le consommateur pour mettre à jour redis.

Je suis un peu confus et je ne sais pas comment choisir.

Pourriez-vous me dire les avantages et les inconvénients de chaque façon et il vaut mieux me dire d'autres façons de mettre à jour redis ou recommander un blog sur ce problème.

14
mengying.ye

Le stockage et le cache des données réels doivent être synchronisés en utilisant la troisième approche que vous avez déjà décrite dans votre question.

Lorsque vous ajoutez des données à votre magasin définitif (c'est-à-dire votre base de données SQL), vous devez mettre ces données en file d'attente sur un bus de service ou une file d'attente de messages, et laisser un service asynchrone faire toute la synchronisation en utilisant une sorte de processus d'arrière-plan.

Vous ne voulez pas entrer dans ces cas (lorsque vous n'utilisez pas un bus de service et un service asynchrone):

  • Ralentissez vos demandes ou vos processus, car l'utilisateur doit attendre que les données soient à la fois stockées dans votre base de données et votre cache.
  • Risque d'échec pendant le processus de mise en cache et de ne pas pouvoir avoir de stratégie de nouvelle tentative (qui est généralement une fonction intégrée dans un bus de service ou certaines files d'attente de messages). En outre, cet échec peut se traduire par une corruption de cache partielle ou complète et vous ne pourrez pas planifier automatiquement et facilement une tâche pour résoudre cette situation.

À propos de l'utilisation de l'expiration de la clé Redis, c'est une bonne idée. Étant donné que Redis peut expirer les clés à l'aide de son mécanisme intégré, vous ne devez pas implémenter l'expiration des clés de l'ensemble du processus d'arrière-plan. Si une clé existe, c'est parce qu'elle est toujours valide.

BTW, vous ne serez pas toujours sur ce cas (si une clé n'est pas expirée, cela signifie qu'elle ne doit pas être remplacée). Cela peut dépendre de votre domaine réel.

8