Hinweis: In den nächsten Monaten wird die App Engine-Dokumentationswebsite neu organisiert, um das Auffinden von Inhalten und die bessere Abstimmung mit den anderen Google Cloud-Produkten zu erleichtern. Es werden dieselben Inhalte verfügbar sein, aber die Navigation wird nun den restlichen Cloud-Produkten entsprechen.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Diese Seite enthält Codebeispiele für die Verwendung der untergeordneten Memcache API in Java. Memcache ist ein leistungsstarkes, verteiltes Speicherobjekt-Caching-System, das schnellen Zugriff auf im Cache gespeicherte Daten bietet. Weitere Informationen zu Memcache finden Sie in der Übersicht über Memcache.
Synchrone Verwendung
Beispiel für eine untergeordnete API mit dem synchronen MemcacheService:
@SuppressWarnings("serial")
// With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required.
@WebServlet(name = "MemcacheSync", description = "Memcache: Synchronous",
urlPatterns = "/memcache/sync")
public class MemcacheSyncCacheServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException,
ServletException {
String path = req.getRequestURI();
if (path.startsWith("/favicon.ico")) {
return; // ignore the request for favicon.ico
}
MemcacheService syncCache = MemcacheServiceFactory.getMemcacheService();
syncCache.setErrorHandler(ErrorHandlers.getConsistentLogAndContinue(Level.INFO));
String key = "count-sync";
byte[] value;
long count = 1;
value = (byte[]) syncCache.get(key);
if (value == null) {
value = BigInteger.valueOf(count).toByteArray();
syncCache.put(key, value);
} else {
// Increment value
count = new BigInteger(value).longValue();
count++;
value = BigInteger.valueOf(count).toByteArray();
// Put back in cache
syncCache.put(key, value);
}
// Output content
resp.setContentType("text/plain");
resp.getWriter().print("Value is " + count + "\n");
}
}
Asynchrone Verwendung
Beispiel für eine untergeordnete API mit AsyncMemcacheService:
AsyncMemcacheService asyncCache = MemcacheServiceFactory.getAsyncMemcacheService();
asyncCache.setErrorHandler(ErrorHandlers.getConsistentLogAndContinue(Level.INFO));
String key = "count-async";
byte[] value;
long count = 1;
Future<Object> futureValue = asyncCache.get(key); // Read from cache.
// ... Do other work in parallel to cache retrieval.
try {
value = (byte[]) futureValue.get();
if (value == null) {
value = BigInteger.valueOf(count).toByteArray();
asyncCache.put(key, value);
} else {
// Increment value
count = new BigInteger(value).longValue();
count++;
value = BigInteger.valueOf(count).toByteArray();
// Put back in cache
asyncCache.put(key, value);
}
} catch (InterruptedException | ExecutionException e) {
throw new ServletException("Error when waiting for future value", e);
}
Weitere Informationen zur untergeordneten API finden Sie im Memcache-Javadoc.