- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 db-access,我想缓存在我的 akka/spray-application 中。数据库返回一个 Future[Option[X]]。
我设置了一个 lruCache 并将其包裹在我的数据库访问中。
我想要实现的是,如果选项是 Some(X) 则只缓存选项,如果它是 None 则不缓存。在后一种情况下,应再次从数据库中检索数据。
或者,如果这有帮助的话,我可以让 future 失败......
到目前为止,我通过 map 再次从缓存中删除了 Option 并在它为 None 或 future 失败时恢复:
cache(key) {
server.one[X](...)
}.map {
case Some(x) => Some(x)
case None => {
cache.remove(key)
None
}
}.recover {
case x => userCache.remove(key)
}
但这非常丑陋,更不用说 map 中的副作用等......
提前谢谢你,
詹斯
最佳答案
如果 future 失败,则该值将从缓存中删除: https://github.com/spray/spray/blob/master/spray-caching/src/main/scala/spray/caching/LruCache.scala#L79
所以应该这样做:
cache(key) { server.one[X](...).map(_.get) }
关于scala - 喷射缓存 : cache only when not None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21400112/
我面临着解析 JSON 的问题,该字段的字段可能是数组或单个对象。如果酒店有多个房间,则返回典型的 JsArray。但是,如果它只有一种类型的房间,它只会返回一个对象。 我正在尝试使用案例类来解析这种
我有(以前的)REST Spray.io Web 服务。现在,我需要在我的方法之一中生成 SESSIONID 以便与其他一些方法一起使用。我希望它位于响应 header 中。 基本上,我想象的逻辑如下
我是一名优秀的程序员,十分优秀!