Ich habe mich gefragt, ob es eine Möglichkeit gibt, Elemente mit einem Regex aus dem Play-Cache zu löschen.
Ich verwende play 2.2.x und speichere Elemente im Cache nach folgendem Muster:
collectionName.identifier
Gibt es eine Möglichkeit, den Cache mit einem regulären Ausdruck abzulaufen, der dem Schlüssel entspricht, wie:
collectionName.[a-zA-Z0-9]+
Der Grund, warum ich das machen möchte, ist, dass ich manchmal Elemente in db aktualisiere, die einige Felder übereinstimmen, und ich nicht wirklich wissen kann, welche Elemente aktualisiert wurden.
Wenn es in ReactiveMongo eine Möglichkeit gibt, die aktualisierten Objektkennungen abzurufen, würde mir das ebenfalls helfen.
Danke für jede Hilfe.
Antworten:
2 für die Antwort № 1Der Cache von Play verwendet Ehcache. Sie müssen direkt mit Ehcache arbeiten.
Greifen Sie auf den Basiswert zu
Ehcache
Objekt verwendenapp.plugin[EhCachePlugin].cache
(siehe Plugin-Quelle).Dann rufen Sie die an
Ehcache
Objekt "sgetKeys
Methode um die Liste der Cache-Eintragsschlüssel abzurufen.Ordnen Sie dann die Schlüssel selbst zu und entfernen Sie alle Einträge, die Ihrer Regex entsprechen.
Übrigens wäre es besser, wenn Sie Elemente aktualisieren oder aus dem Cache entfernen, wenn Sie die Datenbank aktualisieren.