[英]Saving / Loading Images in Postgres using Anorm (Scala/PlayFramework 2)
[英]How to add cache mechanism when using anorm in Playframework
我看到anorm不是一個ORM框架,它直接通過SQL查詢數據。 對於大多數應用程序/網站,我們不應該每次都查詢數據庫,我們需要通過SQL或項目ID來緩存數據。 我想知道playframework是否提供了任何類型的緩存機制? 如果不是如何添加它?
謝謝。
您可以簡單地緩存Anorm方法的答案。 例如,我使用的真實方法:
def findById(id: Long): Option[User] = {
Cache.getOrElse(userCacheKey + id, 60*60) {
DB.withConnection {
implicit connection =>
SQL("select * from publisher where id = {id}").on('id -> id).as(User.simple.singleOpt)
}
}
}
代碼執行選擇並通過getOrElse
將答案存儲在緩存中。 如果該值在Cache中,則將被識別並且不會執行任何查詢。
唯一的問題是,當您更新實體用戶時,您將不得不更新緩存(因此它不會保留過時的數據):
// Assumes a user: User object available with the updated user
Cache.set(userCacheKey + id, cached.copy(name = user.name, avatar = user.avatar, bio = user.bio, url = user.url, location = user.location), 60*60)
假設您使用的是Play2框架,它確實提供了緩存機制。 它有很好的文檔:
http://www.playframework.org/documentation/2.0/JavaCache (它叫做javacache,但它適用於Scala)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.