diff --git a/memcache/pom.xml b/memcache/pom.xml
new file mode 100644
index 00000000000..7ec220830a4
--- /dev/null
+++ b/memcache/pom.xml
@@ -0,0 +1,92 @@
+
+
+
+ 4.0.0
+ war
+ 1.0-SNAPSHOT
+
+ com.google.appengine.samples.memcache
+ memcache
+
+
+ 1
+ 1.9.18
+ UTF-8
+
+
+
+ 3.1.0
+
+
+
+
+
+ com.google.appengine
+ appengine-api-1.0-sdk
+ ${appengine.version}
+
+
+
+
+
+ ${project.build.directory}/${project.build.finalName}/WEB-INF/classes
+
+
+ org.codehaus.mojo
+ versions-maven-plugin
+ 2.1
+
+
+ compile
+
+ display-dependency-updates
+ display-plugin-updates
+
+
+
+
+
+ org.apache.maven.plugins
+ 3.1
+ maven-compiler-plugin
+
+ 1.7
+ 1.7
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 2.4
+
+ true
+
+
+
+ ${basedir}/src/main/webapp/WEB-INF
+ true
+ WEB-INF
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ 2.15
+
+
+ checkstyle
+ validate
+
+ check
+
+
+ true
+
+
+
+
+
+
+
diff --git a/memcache/src/main/java/com/google/appengine/samples/memcache/AsyncMemcache.java b/memcache/src/main/java/com/google/appengine/samples/memcache/AsyncMemcache.java
new file mode 100644
index 00000000000..f5b42b08641
--- /dev/null
+++ b/memcache/src/main/java/com/google/appengine/samples/memcache/AsyncMemcache.java
@@ -0,0 +1,93 @@
+/* Copyright 2015 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+package com.google.appengine.samples.memcache;
+
+import com.google.appengine.api.memcache.AsyncMemcacheService;
+import com.google.appengine.api.memcache.ErrorHandlers;
+import com.google.appengine.api.memcache.MemcacheServiceFactory;
+import com.google.appengine.api.utils.FutureWrapper;
+
+import java.util.Map;
+import java.util.concurrent.Future;
+import java.util.logging.Level;
+
+/**
+ * Example asynchronous usage of App Engine Memcache.
+ * AsyncMemcache wraps a "slow" map with the memcache service.
+ */
+public class AsyncMemcache {
+
+ /**
+ * the backing map for the memcache.
+ */
+ private Map map;
+
+ /**
+ * Singleton App Engine Memcache service.
+ */
+ private static AsyncMemcacheService asyncCache = null;
+
+ /**
+ * a Lock to ensure that asyncCache is a threadsafe singleton.
+ */
+ private static final Object MEMCACHE_LOCK = new Object();
+
+ /**
+ * @param slowMap a Map for which retrieval is quite expensive
+ */
+ public AsyncMemcache(final Map slowMap) {
+ this.map = slowMap;
+ }
+
+ /**
+ * @param key the String key used for lookup
+ * @return a Future which can be used to retrieve the value
+ **/
+ public final Future get(final String key) {
+ return new FutureWrapper