Ich arbeite an der Leistungsverbesserung meines Projekts (Spring Project, habe nicht viel Erfahrung im Frühjahr, ca. 7 Monate!), Wo wir gefunden dass der größte Teil des Speichers beim Caching verwendet wird. Nach ein paar R & D fand ich, dass Ehcache mir helfen könnte. In meinem Projekt haben wir statische HashMap verwendet, um die Daten von der DB auf dem Serverstart zu laden, und wir verwenden diese Karte in der gesamten Anwendung. Ich habe ein paar Beispiele für Ecache und Spring gesehen (NICHT Spring Boot), aber ich kann nicht verstehen, wie ich es durch meinen bestehenden Code ersetzen kann, wo es überall HashMaps gibt? Auch wenn es irgendeinen anderen Rat oder Vorschlag gibt, bitte posten Sie es..Ich werde eine große Hilfe sein ..! Es gibt ein paar Links auf Stackoverflow über die gleiche Frage, aber sie haben keine Antworten für sie .. Bitte helfen ..!Laden von Daten aus der DB zum Zwischenspeichern mit ehcache und spring, um bestehenden Caching-Mechanismus zu überschreiben
Antwort
Wenn Sie die Daten in einer HashMap haben und jetzt einen EHCache verwenden möchten, ist die Zugriffszeit für einen Eintrag, wenn dieser Eintrag bereits im Cache vorhanden ist, mehr als 10x höher als das, was Sie jetzt haben. Siehe "Laufzeitvergleich für Treffertreffer" unter In Process Java Cache Benchmarks.
Wenn Sie Speicherplatz sparen möchten, werden die Zugriffszeiten viel höher, da Sie die Daten bei Bedarf neu laden müssen.
Wenn Ihre Anwendung auf der HashMap ausgeführt wird und keinen Zugriff auf die Datenbank benötigt, nachdem die HashMaps geladen wurden, haben Sie tatsächlich bereits den perfekten benutzerdefinierten Cache für Ihre Anwendung.
Oh ja, nachdem ich deinen geteilten Link durchlaufen habe, erkenne ich es jetzt. Aber ich wollte es trotzdem selbst für mindestens eine meiner DAO-Dateien testen und wie es geht. Wenn Sie etwas zu meinem Zweifel hinzufügen können, wird es großartig .. :) –
- 1. Verwenden von Ehcache zum Zwischenspeichern von Objekten aus Amazon S3
- 2. Spring PropertyPlaceholderConfigurator laden von DB
- 3. SQLite - Android - Anzeige von Daten aus bestehenden DB
- 4. Android + RxJava - Laden von Daten aus db UND Web-Service
- 5. Laravel, mit In-Memory-DB zum Zwischenspeichern von Ergebnissen
- 6. Eine EhCache-Instanz mit Spring ... intelligent abrufen
- 7. Zwischenspeichern der gesamten Tabelle
- 8. Der beste Weg zum Zwischenspeichern von JSON
- 9. Javascript, Ajax, laden Daten dynamisch von DB
- 10. Laden Sie XML aus DB mit C#
- 11. PHP Dropdown laden Daten von DB
- 12. Laden von geschachtelten Platzhaltern aus der Eigenschaftendatei mit Spring
- 13. Starten und Einrichten der In-Memory-DB mit Spring
- 14. Abrufen von Daten aus DB
- 15. Spring LdapAuthentication und Laden von Rollen aus der lokalen Datenbank
- 16. Laden von Daten aus der Konfigurationsdatei angular2
- 17. Beste Technik zum Zwischenspeichern von Ergebnissen aus selten wechselnden Abfragen
- 18. Redis zum Zwischenspeichern von Bilddateien?
- 19. Python-Skript zum Löschen von Daten aus SQLite DB
- 20. Strategien zum Synchronisieren von Daten und Zwischenspeichern von Daten zwischen iPhone und Server
- 21. Spring Framework und Jpa Repository gibt ungültige DB-Daten zurück
- 22. Ehcache (Unable Klasse laden)
- 23. Spring, Thymeleaf und asynchrone Daten laden
- 24. Hinzufügen von JSON-Daten zu bestehenden Array
- 25. Wie bekomme ich Daten aus der bestehenden MongoDB-Datenbank?
- 26. ehcache Konfiguration in Spring Framework
- 27. Wie lade ich Daten aus der db-Tabelle in den Browser und aktualisiere die Daten zurück in db?
- 28. Spring Transaktion Grenze und DB-Verbindung mit
- 29. Spring überschreiben: Nachrichtentag mit Datenbankwerten
- 30. Codeigniter. RSS-Parser zum Hinzufügen von Daten zu db
"HashMaps überall"? Sie sollten an einer Stelle sein - ein Aspekt. Das ist ein großer Teil Ihres Problems. Nichts kann dir helfen, sie zu einem Ganzen zusammenzufassen. Nimm einfach eine Schaufel und fang an zu graben. – duffymo
von 'Überall', ich für alle solche Datenbanktabellen, wo ich die Daten zwischenspeichere. aber es gibt nur 2 Orte, die wegen der riesigen Datenmenge viel Speicher verbrauchen. :) –
Caching, Protokollierung und Transaktionen sind, was aspektorientierte Programmierung geboren wurde. Wenn Sie von HashMaps, die Sie selbst erstellt haben, zu EhCache oder einer anderen Technologie wechseln, werden diese riesigen Einträge nicht kleiner. Sie haben das gleiche Problem mit EhCache. Überdenken Sie, ob Sie so große Objekte zwischenspeichern sollten. Wie oft werden sie benutzt? Sie müssen den klassischen Zeit/Raum-Kompromiss machen. Sie können zwischenspeichern, um Zeit zu sparen, wenn Sie genügend Speicherplatz haben; Du verbringst Zeit, wenn du es nicht tust. Dein Problem ist nicht Technologie. – duffymo