Memcache Examples

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" 
 ) 
 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" 
 ); 
  
 } 
 } 
 

Asynchronous usage

Low-level API example using 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 
 ); 
 } 
 

For more information on the low-level API, see the Memcache Javadoc .

Create a Mobile Website
View Site in Mobile | Classic
Share by: