我在scala和喷雾缓存方面真的很棒,我需要知道它是如何工作的。 我有数据库,我想要缓存一些表,并更新他们每小时的exmaple。我无法理解它在喷雾缓存库中的实现方式。我觉得写点什么,
val cache: Cache[Double] = LruCache()
def cachedOp[T](key: T): Future[Double] = cache(key) {
//some big function which download table in json array
getTableFromDb()
}
但不知道它是如何工作的。请帮助我,我想学习和理解。抱歉愚蠢的问题和糟糕的语言。
答案 0 :(得分:2)
您可以使用timeToLive
属性配置缓存,使其不会超过1小时的任何条目。
import scala.concurrent.duration._
val cache: Cache[Double] = LruCache(timeToLive = 1 hour)
1小时后,该值将自动从缓存中逐出。
这意味着下次访问时,它将无法在缓存中找到,因此将对其进行计算,并将结果再次放入缓存中1小时。
您正在使用它来刷新缓存。
我建议您同时使用属性maxCapacity
来控制缓存的大小,使其不会超出比例。
您可以执行以下操作:
val cache: Cache[Double] = LruCache(maxCapacity = 100, timeToLive = 1 hour)
def cachedOp[T](key: T): Future[Double] = cache(key) {
getTableFromDb() // returns Future[Double]
}
希望它有所帮助。