使用memcached使Java Play框架缓存Ebean实体

min*_*das 18 java memcached playframework ebean playframework-2.6

我正在运行Java Play框架版本v2.6.1并使用Ebean进行持久化.我的目的是使用play2-memcached插件获取bean缓存.

到目前为止我做了什么?

  • 安装memcached在localhost上并启用详细日志记录.
  • ehcachecacheApiin libraryDependenciesin 替换了依赖build.sbt(我假设,应该完全删除Ehcache).
  • 加入"com.github.mumoshu" %% "play2-memcached-play26" % "0.9.0",libraryDependenciesbuild.sbt
  • 加入"Spy Repository" at "http://files.couchbase.com/maven2",resolversbuild.sbt
  • 将以下条目添加到应用程序conf:

play.modules.disabled += "play.api.cache.ehcache.EhCacheModule" play.modules.enabled+="com.github.mumoshu.play2.memcached.MemcachedModule" play.cache.defaultCache=default play.cache.bindCaches=["db-cache", "user-cache", "session-cache"] memcached.host="127.0.0.1:11211"

  • 拿了我的实体并使其实现Serializable,还添加了@com.avaje.ebean.annotation.Cache注释.
  • 启用S​​QL日志记录

什么有用?

  • Entity.find.byId(id)结果SQL 加载实体SELECT.使用不同的请求结果再次加载它没有SQL语句.
  • 打开浏览器到localhost:11211显示syslog中的错误 - 这是为了确保memcached正在运行,我可以看到请求出现
  • 进行内存转储我可以看到com.github.mumoshu加载了与缓存相关的类.

什么不起作用?

  • 我希望缓存的对象被发送到memcached(在读取和/或更新时).这没有发生 - 没有与此相关的memcached日志.如果我运行,则没有任何与端口11211的连接netstat -na | grep 11211.

有什么我想念的吗?

mku*_*urz 1

您还需要绑定javax.caching.CacheManager. 添加

libraryDependencies += jcache
Run Code Online (Sandbox Code Playgroud)

给你的build.sbt.

如果您使用 Guice,则还必须为 Java 注释添加以下内容:

libraryDependencies += "org.jsr107.ri" % "cache-annotations-ri-guice" % "1.0.0"
Run Code Online (Sandbox Code Playgroud)

更多信息可以在Playframework 文档的“JCache 支持”部分找到。