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

hiberner le cache de deuxième niveau avec Redis - améliorera-t-il les performances ?

Des différences drastiques auxquelles vous pouvez vous attendre si vous mettez en cache ce qui est bon à mettre en cache et évitez de mettre en cache des données qui ne devraient pas du tout être mises en cache. Comme la beauté est dans l'œil du spectateur, il en va de même pour la performance. Voici plusieurs aspects que vous devez garder à l'esprit lorsque vous utilisez le fournisseur de cache de second niveau d'hibernate AS :

Pas de sérialisation personnalisée - Mémoire intensive
Si vous utilisez la mise en cache de second niveau, vous ne pourrez pas utiliser des frameworks de sérialisation rapides tels que Kryo et devrez vous en tenir à java sérialisable, ce qui est nul.

En plus de cela, pour chaque type d'entité, vous aurez une région distincte et dans chaque région, vous aurez une entrée pour chaque clé de chaque entité. En termes d'efficacité de la mémoire, c'est inefficace.

N'a pas la capacité de stocker et de distribuer des objets riches
La plupart des caches modernes présentent également une fonctionnalité de grille informatique, vos objets étant fragmentés en plusieurs petits morceaux, ce qui diminue votre capacité à exécuter des tâches distribuées avec une colocalisation des données garantie. Cela dépend un peu du fournisseur de grille, mais pour beaucoup, ce serait une limitation.

Performances sous-optimales
Selon les performances dont vous avez besoin et le type d'application que vous utilisez, l'utilisation du cache de second niveau d'hibernation peut être un bon ou un mauvais choix. Bon en termes de plug and play..." genre de..." mauvais parce que vous n'obtiendrez jamais les performances que vous auriez gagnées. La conception de modèles riches signifie également plus de travail initial et plus de POO.

Capacités d'interrogation limitées sur le cache lui-même
Cela dépend du fournisseur de cache, mais certains fournisseurs ne sont vraiment pas bons pour faire des JOIN avec une clause Where différente de l'ID. Si vous essayez de créer un index en mémoire pour une requête sur Hazelcast, par exemple, vous verrez ce que je veux dire.