Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Anwendungscache vs. Second-Level-Cache überwintern, welchen verwenden?

Es hängt wirklich von Ihrem Anwendungsabfragemodell und den Verkehrsanforderungen ab.

  1. Die Verwendung von Redis/Hazelcast kann die beste Leistung erzielen, da es keinen Roundtrip zur DB mehr gibt, aber am Ende haben Sie normalisierte Daten in der DB und eine denormalisierte Kopie in Ihrem Cache, was Ihre Cache-Aktualisierung unter Druck setzt Richtlinien. Sie erhalten also die beste Leistung auf Kosten der Implementierung des Cache-Updates, wenn sich die persistenten Daten ändern.
  2. Die Verwendung des 2nd-Level-Cache ist einfacher einzurichten, aber es speichert nur Entitäten nach ID. Es gibt auch einen Abfrage-Cache, der IDs speichert, die von einer bestimmten Abfrage zurückgegeben werden. Der 2nd-Level-Cache ist also ein zweistufiger Prozess, den Sie fein abstimmen müssen, um die beste Leistung zu erzielen. Wenn Sie Projektionsabfragen ausführen, hilft Ihnen der Objektcache der 2. Ebene nicht, da er nur beim Laden von Entitäten funktioniert. Der Hauptvorteil des 2nd-Level-Cache besteht darin, dass es einfacher ist, ihn zu synchronisieren, wenn sich Daten ändern, insbesondere wenn alle Ihre Daten durch den Ruhezustand beibehalten werden.

Wenn Sie also ultimative Leistung benötigen und es Ihnen nichts ausmacht, Ihre Cache-Aktualisierungslogik zu implementieren, die ein minimales Eventual Consistency Window sicherstellt, dann entscheiden Sie sich für einen externen Cache.

Wenn Sie Entitäten nur zwischenspeichern müssen (die sich normalerweise nicht so häufig ändern) und auf diese hauptsächlich über das Laden von Hibernate-Entitäten zugreifen, kann Ihnen der 2nd-Level-Cache helfen.