Memcache Examples
Stay organized with collections
Save and categorize content based on your preferences.
This page provides code examples in Java for using the low-level Memcache API. Memcache is a high-performance, distributed memory object caching system that provides fast access to cached data. To learn more about memcache, read the Memcache Overview.
Synchronous usage
Low-level API example using the synchronous 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")
publicclass MemcacheSyncCacheServletextendsHttpServlet{
@Override
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsIOException,
ServletException{
Stringpath=req.getRequestURI();
if(path.startsWith("/favicon.ico")){
return;// ignore the request for favicon.ico
}
MemcacheServicesyncCache=MemcacheServiceFactory.getMemcacheService();
syncCache.setErrorHandler(ErrorHandlers.getConsistentLogAndContinue(Level.INFO));
Stringkey="count-sync";
byte[]value;
longcount=1;
value=(byte[])syncCache.get(key);
if(value==null){
value=BigInteger.valueOf(count).toByteArray();
syncCache.put(key,value);
}else{
// Increment value
count=newBigInteger(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");
}
}Asynchronous usage
Low-level API example using AsyncMemcacheService:
AsyncMemcacheServiceasyncCache=MemcacheServiceFactory.getAsyncMemcacheService();
asyncCache.setErrorHandler(ErrorHandlers.getConsistentLogAndContinue(Level.INFO));
Stringkey="count-async";
byte[]value;
longcount=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=newBigInteger(value).longValue();
count++;
value=BigInteger.valueOf(count).toByteArray();
// Put back in cache
asyncCache.put(key,value);
}
}catch(InterruptedException|ExecutionExceptione){
thrownewServletException("Error when waiting for future value",e);
}For more information on the low-level API, see the Memcache Javadoc.