/ / Play Framework-Cache Entferne Elemente, die zu einem regulären Ausdruck passen - regex, scala, playframework, ehcache, reagivemongo

Play Framework cache Entfernen Sie Elemente, die mit regex übereinstimmen - regex, scala, playframework, ehcache, reactivemongo

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 № 1

Der Cache von Play verwendet Ehcache. Sie müssen direkt mit Ehcache arbeiten.

  1. Greifen Sie auf den Basiswert zu Ehcache Objekt verwenden app.plugin[EhCachePlugin].cache (siehe Plugin-Quelle).

  2. Dann rufen Sie die an Ehcache Objekt "s getKeys Methode um die Liste der Cache-Eintragsschlüssel abzurufen.

  3. 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.