gwuj 发表于 2015-11-18 10:18:43

java中访问memcache

  用spy和memcached forjava两种方式对memcache进行操作
  
  一、spy
  package com.test.memcache;

import java.net.InetSocketAddress;
import java.util.concurrent.Future;
import net.spy.memcached.MemcachedClient;

/**
* 本类用的包是memcached-2.4.1.jar
*下载地址: http://code.google.com/p/spymemcached/
*/
public class SpyTest {
    public void putObject() {
      try {
            /* 建立MemcachedClient 实例,并指定memcached服务的IP地址和端口号 */
            MemcachedClient mc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
            Future<Boolean> b = null;


            /* 将key值,过期时间(秒)和要缓存的对象set到memcached中 */
            b = mc.set(&quot;key1&quot;, 60, &quot;hello1&quot;); // 如果以前存在,则会自动覆盖

            if (b.get().booleanValue() == true) {
                mc.shutdown();
            }

      } catch (Exception ex) {
            ex.printStackTrace();
      }
    }

    public void getObject() {
      try {
            /* 建立MemcachedClient 实例,并指定memcached服务的IP地址和端口号 */
            MemcachedClient mc = new MemcachedClient(new InetSocketAddress(&quot;127.0.0.1&quot;, 11211));
            /* 按照key值从memcached中查找缓存,不存在则返回null */
            Object b = mc.get(&quot;key1&quot;);
            System.out.println(b);
            mc.shutdown();
      } catch (Exception ex) {
            ex.printStackTrace();
      }
    }

    public static void main(String[] args) {
    }
}
  
  二、memcached for java
  package com.test.memcache;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

/**
* 本类用的是java_memcached-release-2.5.1.jar包
*      下载地址: http://github.com/gwhalin/Memcached-Java-Client/downloads
*
* @author Administrator
*
*/
public class MemcachedTest {
    String[] servers = { &quot;127.0.0.1:11211&quot; };

    Integer[] weights = { 3 };
    MemCachedClient mcc = new MemCachedClient();
    // 创建一个实例对象SockIOPool
    SockIOPool pool = SockIOPool.getInstance();

    public MemcachedTest() {
      pool.setServers(servers);
      pool.setWeights(weights);

      pool.setInitConn(5);
      pool.setMinConn(5);
      pool.setMaxConn(250);
      pool.setMaxIdle(30);

      pool.setMaintSleep(30);
      pool.initialize();
    }

    public void putObject() {
      for (int i = 1; i < 10; i++) {
            Boolean b = mcc.add(&quot;key&quot; + i, &quot;hi, michael&quot; + i); // 如果以前存在,则不去更新
            System.out.println(&quot;key&quot; + i + b);
      }
    }

    public void replaceObject() {
      Boolean b = mcc.replace(&quot;key2&quot;, &quot;hi, tom&quot;); // 如果key不存在,则返回flase,更新失败
      System.out.println(&quot;update &quot; + b);
    }

    public void getObject() {
      Object obj = mcc.get(&quot;key2&quot;);
      System.out.println(obj);
    }

   
    public static void main(String args[]) {
      MemcachedTest tc = new MemcachedTest();
      // tc.putObject();
      // tc.replaceObject();
         tc.getObject();

      tc.pool.shutDown();

    }
}
             版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: java中访问memcache