使用播放框架管理外部 api 调用的缓存解决方案
Cache solution to manage external api calls using play framework
我有一些外部付费 api 用于根据某些 ID 检索数据,我将执行的一些调用可能具有相同的 ID,因此我正在寻找最佳实践用缓存管理这种场景。
我还希望能够在 24 小时后删除缓存。
有什么建议吗?
谢谢!
Play 文档给出了(imo)关于做什么的明确指示:https://www.playframework.com/documentation/2.6.x/ScalaCache
它的要点是:
- 在需要的地方注入缓存实例:
- 使用您的实例来缓存内容:
所以基本上:
import play.api.cache._
import play.api.mvc._
import javax.inject.Inject
class Application @Inject() (cache: AsyncCacheApi, cc:ControllerComponents) extends AbstractController(cc) {
[...]
val result: Future[Done] = cache.set("item.key", connectedUser, 24.hours)
val futureMaybeUser: Future[Option[User]] = cache.get[User]("item.key")
}
我有一些外部付费 api 用于根据某些 ID 检索数据,我将执行的一些调用可能具有相同的 ID,因此我正在寻找最佳实践用缓存管理这种场景。 我还希望能够在 24 小时后删除缓存。
有什么建议吗?
谢谢!
Play 文档给出了(imo)关于做什么的明确指示:https://www.playframework.com/documentation/2.6.x/ScalaCache
它的要点是:
- 在需要的地方注入缓存实例:
- 使用您的实例来缓存内容:
所以基本上:
import play.api.cache._
import play.api.mvc._
import javax.inject.Inject
class Application @Inject() (cache: AsyncCacheApi, cc:ControllerComponents) extends AbstractController(cc) {
[...]
val result: Future[Done] = cache.set("item.key", connectedUser, 24.hours)
val futureMaybeUser: Future[Option[User]] = cache.get[User]("item.key")
}