EDIT CircumflexはehcacheのgetKeys
に
アクセスするため、キャッシュプラグインの実装がgetKeysを公開していれば、Playでも同様のことが可能です。これは不可能な場合があります(すべてのキャッシュライブラリがキャッシュ内のすべてのキーをクエリする手段を提供すると想定します)。
オリジナル EhCacheのキープレフィックスでキャッシュエントリを削除する方法はありますか?
デフォルトでEhCacheを使用するPlayフレームワークのキャッシュ実装を使用しています。
Play 2 Scala Cache.scalaを見ると、削除するキーである文字列を受け取るremoveメソッドがありますが、EhCache自体がプレフィックスによる削除をサポートしているかどうか疑問に思っています(サポートしている場合は、2.1スナップショットのPlay開発者に機能リクエストを行います)。
現状では、一般的なキャッシュキーのリストを取得し、一致するものを削除するヘルパーメソッドを使用しています。
object clear {
def apply(key: String, keys: List[String] = List()) = {
if(keys.size > 0) keys.filter(_.startsWith(key)) map(Cache.remove(_))
else Cache.remove(key)
}
}
ただし、固定キーのリストを維持することは、キープレフィックスを直接キャッシュ削除に渡すことと比較してばかげています。