La soi-disant cohérence des données Redis signifie qu'après modification, enregistrement ou suppression, les données dans Redis doivent également changer en conséquence, sinon, lorsque l'utilisateur interroge à nouveau, il est susceptible de trouver des données sales qui ont été supprimées.
1. La nécessité d'une cohérence du cache
Dans la continuité de l'article précédent, nous avons résolu le problème de pénétration du cache redis (solution simple, peut être optimisée encore une fois), mais lors de l'utilisation de Redis, nous devons également prendre en compte la question de la cohérence du cache. Par exemple : après avoir enregistré un nouvel utilisateur, les données doivent également être insérées dans le cache Redis en même temps, et une certaine partie des données doit l'être. mis à jour dans le cache doit également être mis à jour de manière synchrone, et la méthode par défaut de redis est la suivante : lorsque vous ne la définissez pas, la valeur stockée dans redis est les données que vous avez précédemment stockées. Les données ne seront synchronisées qu'au redémarrage du serveur. Évidemment, ce n’est pas souhaitable. Oui, si tel était le cas, ne faudrait-il pas redémarrer le serveur à tout moment ?
2. Scénarios métier
Je ne parlerai ici que d'un seul scénario. Les autres scénarios sont traités de la même manière. Le scénario est le suivant : Supposons que nous mettions les données utilisateur dans Redis. , il y a Lorsqu'un nouvel utilisateur s'inscrit, une nouvelle donnée sera insérée dans la base de données. En même temps, la donnée doit également être insérée dans redis afin que les dernières données puissent être affichées lors de la prochaine requête.
Voyons d'abord si redis effectuera des opérations de cohérence pour nous sans utiliser aucun traitement par défaut. Il y a maintenant 18 éléments de données utilisateur dans ma base de données de test. À ce stade, après le démarrage du système, nous enregistrons et insérons le premier Après 19 éléments de données, vérifiez s'il y a 19 éléments dans redis.
Après l'inscription, j'ai maintenant inséré la 19ème donnée dans la base de données
Ensuite, nous utilisons toujours le article précédentLa méthode de cache de requête mentionnée est utilisée pour obtenir toutes les informations.Regardons directement la dernière, nous pouvons voir que la dernière est Runqing au lieu de Nineteen, donc Redis n'effectue pas d'opérations de cohérence du cache pour nous par défaut.
3. Implémentation de la cohérence du cache (Option 1)
En fait, il est très simple d'obtenir la cohérence après avoir effectué l'opération d'insertion, nous prenons. extrayez les données et enregistrez-les dans le cache Redis en même temps, de sorte que lorsque nous interrogeons à nouveau le cache, nous puissions également voir les nouvelles données :
.Choses à noter Oui : j'appelle directement findAll() de JPA ici. En fait, une meilleure façon est de mettre à jour celui qui vient d'être inséré en fonction de l'identifiant. Voici juste une démonstration de la façon de l'implémenter. , puis enregistrez une nouvelle donnée pour voir si cela fonctionne. Vous pouvez également voir dans le cache : l'identifiant de données nouvellement inséré est 29. Voyons si les nouvelles données existent dans le cache
4. Implémentation de la cohérence du cache Redis (Option 2) Effacez régulièrement les données dans Redis, par exemple, définissez une tâche planifiée, et les données dans Redis seront être effacé toutes les heures, c'est-à-dire laisser redis Les données deviennent invalides, et lorsque vous les enregistrez ou les supprimez à nouveau, les données précédentes dans redis n'existent plus, cela équivaut donc à réinitialiser les données sur redis, donc la cohérence des données peut être garanti. Pour plus de connaissances sur Redis, veuillez faire attention à la colonneTutoriel d'introduction à 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!