У меня есть доступ к базе данных, который я хотел бы кэшировать в своем приложении akka/spray. БД возвращает Future[Option[X]].
Я установил lruCache и обернул его вокруг моего доступа к базе данных.
Чего я хотел бы добиться, так это кэшировать только вариант, если он Some (X), а не, если он None. В последнем случае данные должны быть снова получены из БД.
В качестве альтернативы я мог бы провалить будущее, если бы это помогло...
Пока я снова удаляю Option из кеша через карту и восстанавливаю, если это None или будущее не удалось:
cache(key) {
server.one[X](...)
}.map {
case Some(x) => Some(x)
case None => {
cache.remove(key)
None
}
}.recover {
case x => userCache.remove(key)
}
Но это очень некрасиво, не говоря уже о побочных эффектах в карте и т.д...
Заранее спасибо,
Йенс