[英]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.