首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >喷雾缓存:只有在没有缓存时才缓存。

喷雾缓存:只有在没有缓存时才缓存。
EN

Stack Overflow用户
提问于 2014-01-28 08:11:28
回答 1查看 648关注 0票数 2

我有一个数据库访问,我想缓存在我的akka/喷雾-应用程序。db返回一个Future[OptionX]。

我设置了一个lruCache,并将它封装在我的数据库访问中.

我想要实现的是,只缓存选项,如果它是一些(X),而不是,如果它是没有。在后一种情况下,应该再次从db检索数据。

如果这能帮上忙的话我可能会失败的..。

到目前为止,我再次通过map从缓存中删除该选项,如果没有或未来失败,则恢复:

代码语言:javascript
复制
cache(key) {
      server.one[X](...)
}.map {
   case Some(x) => Some(x)
   case None => {
     cache.remove(key)
     None
  }
}.recover {
  case x => userCache.remove(key)
}

但这很难看,更不用说地图上的副作用了等等.

提前谢谢你,

延斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-28 08:28:57

如果未来失败,那么该值将从缓存:https://github.com/spray/spray/blob/master/spray-caching/src/main/scala/spray/caching/LruCache.scala#L79中移除。

所以这应该可以做到:

代码语言:javascript
复制
cache(key) { server.one[X](...).map(_.get) }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21400112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档