Maison  >  Questions et réponses  >  le corps du texte

mysql - Poser une question sur la mise en cache d'une base de données en Java

Je suis désormais responsable d'une plateforme d'écriture personnelle dans une bibliothèque scolaire. Le modèle économique de base est terminé, mais le projet n'a pas été optimisé dans un environnement à forte concurrence.

Chaque élève peut rédiger une critique de livre ou prendre des notes après avoir lu un livre. Les critiques de livres sont publiques et les notes sont privées. Selon la pratique actuelle, chaque opération étudiante accède à la base de données pour une requête, il y aura donc certainement un goulot d'étranglement en termes de performances à l'avenir.

J'ai probablement regardé les tutoriels relatifs à ehcache mais il n'y a pas de bonne solution La raison principale est que je ne peux pas juger si le cache est invalide. Par exemple, si vous mettez dans le cache un certain nombre de notes d'étudiants fréquents, si vous définissez un délai d'expiration spécifique de 5 minutes, que devez-vous faire si une nouvelle note est ajoutée ou modifiée dans ce délai de 5 minutes ?

Par exemple, si une instruction SQL correspond à une instruction SQL dans mybatisselect * from comments condition,我可以通过ehcache建立一个内存缓存,但是如果commentsUn nouvel enregistrement est ajouté ou mis à jour, comment le cache ajouté dans ehcache peut-il être mis à jour correctement ?

Des internautes peuvent-ils suggérer des solutions pertinentes ? merci :-)

为情所困为情所困2710 Il y a quelques jours697

répondre à tous(1)je répondrai

  • 代言

    代言2017-06-12 09:21:37

    Puisqu'il s'agit d'un cache, il doit être tolérant quant à l'efficacité des données. Sinon, si vous souhaitez contrôler strictement les données en temps réel, vous ne pouvez accéder à la base de données que pour des requêtes.

    Selon le scénario commercial décrit par l'interrogateur, la solution courante consiste à maintenir la relation entre les livres et les critiques de livres via des index externes (bien sûr, l'index n'est pas complètement en temps réel), puis via le cache kv (redis, ehcache, carte, etc.) pour mettre en cache le contenu spécifique de la critique de livre.
    Lors de la mise à jour des données, la base de données est généralement mise à jour en premier, puis le cache est mis à jour. L'index n'a pas besoin d'être mis à jour.
    Lorsque les données sont mises à jour (insérer), la relation correspondante doit être ajoutée à l'index en fonction de la mise à jour.

    Pour un index externe simple, vous pouvez ajouter une table relationnelle (revue de livre) dans la base de données, créer un index et, lors de l'interrogation de critiques de livres, interroger d'abord (requête paginée) la table relationnelle, puis interroger la critique de livre spécifique. informations via la clé primaire de la critique de livre (la mise en cache est ajoutée à une seule information de critique de livre), il est recommandé d'interroger deux fois et d'assembler les données en mémoire, et de ne pas utiliser de requête de jointure de table (affecte les performances de la base de données). Il n'est pas nécessaire de créer un cache pour les données des tables relationnelles. Il vous suffit d'augmenter le cache des informations sur les critiques de livres.

    répondre
    0
  • Annulerrépondre