0

请不要将此问题标记为重复。我阅读了前面的问题,但我仍然无法理解。

我目前正在研究一个用 Java 设计的项目,该项目使用 MongoDB 进行持久性。但由于它的一些性能问题,我被要求使用 Memcached。但我无法弄清楚 Memcached 如何帮助我做到这一点。

上网时,由于 Memcache 和 Memcached 等缓存服务,我变得更加困惑。有人可以解释一下这些有何不同以及为什么在询问 Memcached 时 PHP 会在某些问题中成为答案。

我要求所有人清楚地回答,并通过一个例子告诉我如何在我的项目中使用 Memcached。什么是 Memcache、Memcached、Jcache 和 SpyMemcached?

如果可能,请在某处提供完成 Memcached 示例的链接。

4

1 回答 1

8

Memcache 和 Memcached 是同一个东西,“正确的名称”是 Memcached ( http://memcached.org/ )。

JCache 是标准 Java API (JSR 107 - https://jcp.org/en/jsr/detail?id=107 ) 的名称,它提供了与缓存层/解决方案交互的通用 API。(从键/值缓存中获取/设置/删除数据以简化)

所以你真的想在你的 Java 应用程序中使用 MongoDB 顶部的缓存层,你必须:

  1. 在基础设施的某个地方安装 Memcached(如果尚未安装,您可以使用 telnet 快速测试它。默认端口是 11211,因此您可以运行 telnet localhost 11211 以查看它是否正常工作。

  2. 您必须为 Memcached 使用 JCache 实现,例如这个:https ://github.com/toelen/spymemcached-jcache这将允许您将数据存储和获取到在您的基础架构中某个位置运行的 Memcached 进程。

    由于您在谈论 JCache,您正在使用 Java,因此也可以使用基于 Java 的缓存,该缓存将直接在您的 JVM 中工作,而无需第三方缓存/进程(memcached)。您可以找到其中的许多,例如 eHCache、JBoss Cache,并且它们中的大多数都使用标准的 JCache API 公开其 API。

  3. 现在您需要对数据访问层进行编码以从 MongoDB 中获取数据并使用 JCache API 将它们设置到缓存中。在此代码中,您必须检查数据是否在缓存中,如果没有则从 MongoDB 查询数据,并将其设置在缓存中并使用它。小心驱逐策略。

这篇关于在 Google App Engine 文档中使用 JCache 的文档很有趣,可以查看“伪代码” https://developers.google.com/appengine/docs/java/memcache/usingjcache(您的代码会有所不同,但它应该可以帮助您看看你必须在你的代码中做什么。)

之所以经常看到 Memcached 和 PHP 在一起,是因为 Memcached 是 PHP 应用程序最常用的缓存层,有很多 API/FWK 都在使用它。在 Java 中,我们有很多选择,从纯 Java 层到 Memcached 或其他......

但是,这是“整体”方法,但在这样做之前,我会检查“为什么”你说 MongoDB 很慢,并解决问题。

于 2014-08-26T13:59:36.847 回答