2016-05-18 4 views
1

Ich verwende JCache API-Caches in meiner Anwendung zu konfigurieren, die Feder-Caching mit Ehcache verwendet 3.Limit-Cache-Größe mit JCache Konfiguration API

cacheManager.createCache("users", new MutableConfiguration<String, User>() 
        .setStoreByValue(false) 
        .setManagementEnabled(true) 
        .setStatisticsEnabled(true) 
        .setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.TEN_MINUTES))); 

Wie kann ich Cache-Größe begrenzen 50 Einträge zu sagen? Es ist einfach, dies über die Ehcache-XML-Konfiguration zu tun, aber wenn es eine Möglichkeit gibt, dies über die JCache-Konfigurations-API zu steuern, würde ich das lieber verwenden.

Antwort

1

Leider ist die Begrenzung der Größe nicht Teil des Standards. Sie benötigen dazu immer eine herstellerspezifische Konfiguration.

Ich bin nicht glücklich darüber selbst und habe Anwendungsfälle, wo ich die Größenbeschränkung innerhalb des Programms und mit einer Standard-API festlegen möchte. Es gibt jedoch auch gute Gründe, den Standard nicht zu übernehmen:

Was bedeutet die Größenbeschränkung? Welches sind die genauen Semantiken, denen ein Cache folgen muss? Kann nützliche Semantik für alle Caches definiert werden? Zum Beispiel ist es für einen verteilten Cache sehr schwierig, die Anzahl der Einträge im Cache überhaupt zu bestimmen.

Es gibt verschiedene Konzepte, um die Cachegröße zu begrenzen. Einige Caches ermöglichen das Festlegen einer Byte-Größenbeschränkung.

Mit nicht trivialen Anwendungen möchten Sie nicht die Größen im Code schreiben. Die Größe ist Konfiguration und das sollte irgendwo getrennt und überschaubar sein. Eine externe Konfiguration gehört ebenfalls nicht zum Standard. Es gibt viele Meinungen und keine Standardkonfiguration.

Verwandte Themen