Redis
 sql >> Base de données >  >> NoSQL >> Redis

Cache d'application vs. cache de second niveau d'hibernation, lequel utiliser ?

Cela dépend vraiment du modèle d'interrogation de votre application et des demandes de trafic.

  1. L'utilisation de Redis/Hazelcast peut donner les meilleures performances car il n'y aura plus d'aller-retour vers la base de données, mais vous finirez par avoir des données normalisées dans la base de données et une copie dénormalisée dans votre cache, ce qui exercera une pression sur la mise à jour de votre cache Stratégies. Ainsi, vous obtenez les meilleures performances au prix de la mise en œuvre de la mise à jour du cache chaque fois que les données persistantes changent.
  2. L'utilisation du cache de 2e niveau est plus facile à configurer, mais il ne stocke que les entités par identifiant. Il existe également un cache de requêtes, stockant les identifiants renvoyés par une requête donnée. Ainsi, le cache de 2e niveau est un processus en deux étapes que vous devez affiner pour obtenir les meilleures performances. Lorsque vous exécutez des requêtes de projection, le cache d'objets de 2e niveau ne vous aidera pas, car il ne fonctionne que sur le chargement de l'entité. Le principal avantage du cache de 2e niveau est qu'il est plus facile de le maintenir synchronisé chaque fois que les données changent, surtout si toutes vos données sont conservées par la mise en veille prolongée.

Donc, si vous avez besoin de performances optimales et que cela ne vous dérange pas d'implémenter votre logique de mise à jour du cache qui assure une fenêtre de cohérence éventuelle minimale, optez pour un cache externe.

Si vous avez seulement besoin de mettre en cache des entités (qui ne changent généralement pas aussi souvent) et que vous y accédez principalement via le chargement d'entités Hibernate, alors le cache de 2e niveau peut vous aider.