JAVA Memcached 安装与简单实战(windows)

时间:2021-06-04 20:41:58

JAVA Memcached 安装与简单实战(windows)

  首先到http://danga.com/memcached/(符件中我也上传了这两个包)下载memcached的windows版本和java客户端jar包,目前最新版本是memcached-1.2.1-win32.zip和java_memcached-release_1.6.zip,分别解压后即可!首先是安装运行memcached服务器,我们将memcached-1.2.1-win32.zip解压后,进入其目录,然后运行如下命令: 
c:>memcached.exe -d install 
c:>memcached.exe -l 127.0.0.1 -m 32 -d start(也要以使用 memcached.exe -d start 使用这个启动的话,则需要修改注册表来修改占用内存大小、端口,详情请看memcached-1.2.1-win32.zip包中的Changing Parameters.txt) -p 44444 -m 32 -d runservice



    第一行是安装memcached成为服务,这样才能正常运行,否则运行失败!第一行是启动memcached的,作为测试我们就简单的只分配32M内存了,然后监听本机端口和以守护进行运行。执行完毕后,我们就可以在任务管理器中见到memcached.exe这个进程了。好了,我们的服务器已经正常运行了, 下面我们就来写java的客户端连接程序。 

在程序中使用的JAr包在java_memcached-release_1.6.zip中有。 

程序如下:

Java代码  JAVA Memcached 安装与简单实战(windows)
  1. package com.taobao;   
  2.   
  3.   
  4.   
  5. import java.util.Date;   
  6.   
  7. import com.danga.MemCached.MemCachedClient;   
  8. import com.danga.MemCached.SockIOPool;   
  9.   
  10. public class MemcachedTest {   
  11.   
  12.     // 创建全局的唯一实例   
  13.     protected static MemCachedClient mcc = new MemCachedClient();   
  14.       
  15.     protected static MemcachedTest memCached = new MemcachedTest();   
  16.       
  17.     // 设置与缓存服务器的连接池   
  18.     static {   
  19.         // 服务器列表和其权重   
  20.         String[] servers = {"127.0.0.1:11211"};   
  21.         Integer[] weights = {3};   
  22.   
  23.         // 获取socke连接池的实例对象   
  24.         SockIOPool pool = SockIOPool.getInstance();   
  25.   
  26.         // 设置服务器信息   
  27.         pool.setServers( servers );   
  28.         pool.setWeights( weights );   
  29.   
  30.         // 设置初始连接数、最小和最大连接数以及最大处理时间   
  31.         pool.setInitConn( 5 );   
  32.         pool.setMinConn( 5 );   
  33.         pool.setMaxConn( 250 );   
  34.         pool.setMaxIdle( 1000 * 60 * 60 * 6 );   
  35.   
  36.         // 设置主线程的睡眠时间   
  37.         pool.setMaintSleep( 30 );   
  38.   
  39.         // 设置TCP的参数,连接超时等   
  40.         pool.setNagle( false );   
  41.         pool.setSocketTO( 3000 );   
  42.         pool.setSocketConnectTO( 0 );   
  43.   
  44.         // 初始化连接池   
  45.         pool.initialize();   
  46.   
  47.         // 压缩设置,超过指定大小(单位为K)的数据都会被压缩   
  48.         mcc.setCompressEnable( true );   
  49.         mcc.setCompressThreshold( 64 * 1024 );   
  50.     }   
  51.       
  52.     /**  
  53.      * 保护型构造方法,不允许实例化!  
  54.      *  
  55.      */   
  56.     protected MemcachedTest()   
  57.     {   
  58.           
  59.     }   
  60.       
  61.     /**  
  62.      * 获取唯一实例.  
  63.      * @return  
  64.      */   
  65.     public static MemcachedTest getInstance()   
  66.     {   
  67.         return memCached;   
  68.     }   
  69.       
  70.     /**  
  71.      * 添加一个指定的值到缓存中.  
  72.      * @param key  
  73.      * @param value  
  74.      * @return  
  75.      */   
  76.     public boolean add(String key, Object value)   
  77.     {   
  78.         return mcc.add(key, value);   
  79.     }   
  80.       
  81.     public boolean add(String key, Object value, Date expiry)   
  82.     {   
  83.         return mcc.add(key, value, expiry);   
  84.     }   
  85.       
  86.     public boolean replace(String key, Object value)   
  87.     {   
  88.         return mcc.replace(key, value);   
  89.     }   
  90.       
  91.     public boolean replace(String key, Object value, Date expiry)   
  92.     {   
  93.         return mcc.replace(key, value, expiry);   
  94.     }   
  95.       
  96.     /**  
  97.      * 根据指定的关键字获取对象.  
  98.      * @param key  
  99.      * @return  
  100.      */   
  101.     public Object get(String key)   
  102.     {   
  103.         return mcc.get(key);   
  104.      }   
  105.       
  106.     public static void main(String[] args)   
  107.     {   
  108.     MemcachedTest cache = MemcachedTest.getInstance();   
  109.         cache.add("hello""memcached Test");   
  110.         System.out.print("get value : " + cache.get("hello"));   
  111.           
  112.     }   
  113.   
  114.   
  115. }   
  116.   
  117. 运行结果:   
  118.   
  119. com.danga.MemCached.MemCachedClient Tue Jan 31 16:28:39 CST 2012 - Storing with native handler...   
  120. com.danga.MemCached.MemCachedClient Tue Jan 31 16:28:39 CST 2012 - ++++ memcache cmd (result code): add hello 0 0 20   
  121. (NOT_STORED)   
  122. com.danga.MemCached.MemCachedClient Tue Jan 31 16:28:39 CST 2012 - ++++ data not stored in cache for key: hello   
  123. get value : memcached Test