引用:javascript:void(0)

Memcache的介绍有很多,这里给出如何在Java中应用Memcache的基本方法

 

  1 安装Memcache服务器(windows)

下载windowsMemcache安装包,如memcached-1.2.6-win32-bin.zip,解压到指定位置,比如(D://memcache),打开dos命令行,输入以下两个命令即可启动Memcache服务。

D:/memcache/memcached.exe -d  install 

D:/memcache/memcached.exe -d  start 

 

 

  2 下载Java版本的memcache客户端(以下列出常用的几种)

 spymemcached :

http://code.google.com/p/spymemcached/

 gwhalin / Memcached-Java-Client   

   https://github.com/gwhalin/Memcached-Java-Client/downloads

 Jcache

http://code.google.com/intl/zh-CN/appengine/docs/java/memcache/usingjcache.html

 

 

 

  3 下面给出两种方式调用Memcache

     

  gwhalin / Memcached-Java-Client调用方式如下:

  

 

[java:nogutter] view plaincopy
  1. public class MemcacheManagerForGwhalin {  
  2.       
  3.     // 构建缓存客户端  
  4.     private static MemCachedClient cachedClient;  
  5.     // 单例模式实现客户端管理类  
  6.     private static MemcacheManagerForGwhalin INSTANCE = new MemcacheManagerForGwhalin();  
  7.   
  8.     private MemcacheManagerForGwhalin() {  
  9.         cachedClient = new MemCachedClient();  
  10.         //获取连接池实例  
  11.         SockIOPool pool = SockIOPool.getInstance();  
  12.   
  13.         //设置缓存服务器地址,可以设置多个实现分布式缓存  
  14.         pool.setServers(new String[]{"127.0.0.1:11211"});  
  15.           
  16.         //设置初始连接5  
  17.         pool.setInitConn(5);  
  18.         //设置最小连接5  
  19.         pool.setMinConn(5);  
  20.         //设置最大连接250  
  21.         pool.setMaxConn(250);  
  22.         //设置每个连接最大空闲时间3个小时  
  23.         pool.setMaxIdle(1000 * 60 * 60 * 3);  
  24.   
  25.         pool.setMaintSleep(30);  
  26.   
  27.         pool.setNagle(false);  
  28.         pool.setSocketTO(3000);  
  29.         pool.setSocketConnectTO(0);  
  30.         pool.initialize();  
  31.     }  
  32.       
  33.     /** 
  34.      * 获取缓存管理器唯一实例 
  35.      * @return 
  36.      */  
  37.     public static MemcacheManagerForGwhalin getInstance() {  
  38.         return INSTANCE;  
  39.     }  
  40.   
  41.     @Override  
  42.     public void add(String key, Object value) {  
  43.         cachedClient.set(key, value);  
  44.     }  
  45.   
  46.     @Override  
  47.     public void add(String key, Object value, int milliseconds) {  
  48.         cachedClient.set(key, value, milliseconds);  
  49.     }  
  50.   
  51.     @Override  
  52.     public void remove(String key) {  
  53.         cachedClient.delete(key);  
  54.     }  
  55.   
  56.     @Override  
  57.     public void remove(String key, int milliseconds) {  
  58.         cachedClient.delete(key, milliseconds, new Date());  
  59.     }  
  60.   
  61.     @Override  
  62.     public void update(String key, Object value, int milliseconds) {  
  63.         cachedClient.replace(key, value, milliseconds);  
  64.     }  
  65.   
  66.     @Override  
  67.     public void update(String key, Object value) {  
  68.         cachedClient.replace(key, value);  
  69.     }  
  70.       
  71.       
  72.     @Override  
  73.     public Object get(String key) {  
  74.         return cachedClient.get(key);  
  75.     }  
  76.   
  77. }  

 

 

Spy方式调用如下:

 

 
  1. public class MemcacheManagerForSpy implements IMemcacheManager {  
  2.   
  3.   
  4.     //缓存客户端  
  5.     private MemcachedClient memcacheCient;  
  6.     //Manager管理对象,单例模式  
  7.     private static MemcacheManagerForSpy INSTANCE = new MemcacheManagerForSpy();   
  8.       
  9.     private MemcacheManagerForSpy() {  
  10.         try {  
  11.                 memcacheCient = new MemcachedClient(new InetSocketAddress("127.0.0.1",11211));  
  12.         } catch (IOException e) {  
  13.             e.printStackTrace();  
  14.         }  
  15.     }  
  16.       
  17.     public static MemcacheManagerForSpy getInstance() {  
  18.         return INSTANCE;  
  19.     }  
  20.       
  21.     @Override  
  22.     public void add(String key, Object value, int milliseconds) {  
  23.         memcacheCient.add(key, milliseconds, value);  
  24.     }  
  25.   
  26.     @Override  
  27.     public void add(String key, Object value) {  
  28.         memcacheCient.add(key, 3600, value);  
  29.           
  30.     }  
  31.   
  32.     @Override  
  33.     public void remove(String key, int milliseconds) {  
  34.         memcacheCient.delete(key);  
  35.     }  
  36.   
  37.     @Override  
  38.     public void remove(String key) {  
  39.         memcacheCient.delete(key);  
  40.     }  
  41.   
  42.     @Override  
  43.     public void update(String key, Object value, int milliseconds) {  
  44.         memcacheCient.replace(key, milliseconds, value);  
  45.     }  
  46.   
  47.     @Override  
  48.     public void update(String key, Object value) {  
  49.         memcacheCient.replace(key, 3600, value);  
  50.     }  
  51.   
  52.     @Override  
  53.     public Object get(String key) {  
  54.         return  memcacheCient.get(key);  
  55.     }  
  56. }