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

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

到目前为止,我做了什么?

  • 安装在本地主机上并启用了详细日志记录。memcached
  • 用 in in 替换了依赖关系(我认为,这应该完全删除 Ehcache)。ehcachecacheApilibraryDependenciesbuild.sbt
  • 添加到"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
  • 已启用的 SQL 日志记录

什么有效?

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

什么不起作用?

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

我错过了什么吗?


答案 1

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

libraryDependencies += jcache

到您的 .build.sbt

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

libraryDependencies += "org.jsr107.ri" % "cache-annotations-ri-guice" % "1.0.0"

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


答案 2

推荐