memcached java client

package com.memcached;

import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

/**
 *
 * @author kenter
 */
public class MemcachedUtil {

    private MemCachedClient mcc = new MemCachedClient();

    public MemcachedUtil(String[] servers) {
        // 服务器列表和其权重
        Integer[] weights = {3};
        // 获取socke连接池的实例对象
        SockIOPool pool = SockIOPool.getInstance();
        // 设置服务器信息
        pool.setServers(servers);
        pool.setWeights(weights);
        // 设置初始连接数、最小和最大连接数以及最大处理时间
        pool.setInitConn(5);
        pool.setMinConn(5);
        pool.setMaxConn(250);
        pool.setMaxIdle(1000 * 60 * 60 * 6);
        // 设置主线程的睡眠时间
        pool.setMaintSleep(30);
        /* Tcp的规则就是在发送一个包之前,本地机器会等待远程主机
        对上一次发送的包的确认信息到来;这个方法就可以关闭套接字的缓存,
        以至这个包准备好了就发;*/
        pool.setNagle(false);
        //连接建立后对超时的控制
        pool.setSocketTO(3000);
        pool.setSocketConnectTO(0);
        //初始化一些值并与MemcachedServer段建立连接
        pool.initialize();
        // 压缩设置,超过指定大小(单位为K)的数据都会被压缩
        mcc.setCompressEnable(true);
        mcc.setCompressThreshold(64 * 1024);
    }

    public void bulidCache(String name, Object value) {
        /*set(key,value,Date) ,Date是一个过期时间,如果想让这个过期时间生效的话,这里传
        递的new Date(long date) 中参数date,需要是个大于或等于1000的值。因为java clie
        nt的实现源码里是这样实现的 expiry.getTime() / 1000 ,也就是说,如果 小于1000的值
        ,除以1000以后都是0,即永不过期*/
        mcc.set(name, value, new Date(0)); //十秒后过期
    }

    public Object output(String name) {
        //从cache里取值
        Object value = (String) mcc.get(name);
        return value;
    }

    public static void main(String[] args) throws InterruptedException {
//        MemcachedUtil cache1 = new MemcachedUtil(new String[]{"192.168.0.82:11211"});
//        cache1.bulidCache("web-001", "用户1");
//        MemcachedUtil cache2 = new MemcachedUtil(new String[]{"192.168.0.169:11211"});
//        cache2.bulidCache("web-002", "服务器");
//        MemcachedUtil cache3 = new MemcachedUtil(new String[]{"192.168.0.128:11211"});
//        cache3.bulidCache("web-003", "用户2");
        MemcachedUtil cache = new MemcachedUtil(
                new String[]{"192.168.0.128:11211"});
        while (true) {
            //System.out.println(cache.output("web01-name"));
            System.out.println(cache.output("web02-pwd"));
            //System.out.println(cache.output("web03-server"));
            Thread.sleep(1000);
        }
    }
}
 

你可能感兴趣的:(java,thread,Web,cache,memcached)