2017-03-03 9 views
0

Ich muss globale TTL zu jeder Entität, die ich habe, und es sollte an einer Stelle konfigurierbar sein. Es gibt eine Möglichkeit, dies über @RedisHash Anmerkung zu tun:Spring Data Redis globale TTL für alle Entitäten

@RedisHash(value = "persons",timeToLive = 100) 
public class Person{ 
    ... 
} 

oder ich ein Feld

public class Person{ 
     @TimeToLeave 
     Long ttl; 
} 

aber in diesem Fall haben kann, kann ich es nicht an einer Stelle ändern und es ist nicht wirklich bequem , um es zu erhalten. Ich habe eine Immobilie in applicaiton.properties:

app.redis.ttl=100 

und es wird die Möglichkeit zu haben, zu ändern es auf dem Grundstück Ebene genial.

Antwort

1

Sie können Einstellungen konfigurieren, indem Sie eine Unterklasse von KeyspaceConfiguration erstellen und @EnableRedisRepositories konfigurieren. Es gibt keine property-basierte Konfiguration für globale TTL.

@EnableRedisRepositories(keyspaceConfiguration = MyKeyspaceConfiguration.class) 
public class MyConfig { 

} 

public class MyKeyspaceConfiguration extends KeyspaceConfiguration { 


    @Override 
    public boolean hasSettingsFor(Class<?> type) { 
     return true; 
    } 

    @Override 
    public KeyspaceSettings getKeyspaceSettings(Class<?> type) { 

     KeyspaceSettings keyspaceSettings = new KeyspaceSettings(type, "my-keyspace"); 
     keyspaceSettings.setTimeToLive(3600L); 

     return keyspaceSettings; 
    } 
} 

von KeyspaceConfiguration ableiten soll Iterable<KeyspaceSettings> initialConfiguration() in erster Linie liefern, aber da Sie anwenden möchten, dass die Einstellungen für alle Klassen, die an Ort und Stelle Schaffung KeyspaceSettings mehr Sinn macht.

Sie könnten auch die KeyspaceSettings zwischenspeichern, um Instanzen nicht überall zu erstellen, so würde Java 8 Map.computeIfAbsent(…) eine gute Passform sein.

+0

danke, ich habe über KeypaceSettings gelesen, aber ich wusste nicht über hasSettingsFor-Methode, ich dachte, ich musste neue KeypaceSettings für jede Entität erstellen. – idmitriev

+0

Und ich denke, Spring-Devs sollten eine einfachere Lösung bieten, nur um ein Flag hinzuzufügen, um diese Konfiguration zu vermeiden, weil es zu ausführlich aussieht. – idmitriev

+0

Möchten Sie ein Ticket einreichen? https://jira.spring.io/browse/DATAREDIS – mp911de

Verwandte Themen