java中如何调用MemCached客户端

如今nosql日益盛行,对于互联网行业开发的各位同仁弟兄想来对于memcached并不陌生。

今天,我主要说一下如果通过java代码操作memcached。

memcached当前使用的客户端主要有的com.danga.MemCached.*客户端,和xMemCached客户端。

根据二狗子的实际开发经验xmemcached的效率和速度明显快于dangajava客户端(现在我们公司也用的是xmemcached客户端),但是据说xmemcached不稳定,所以具体如何选择,就要看各位弟兄公司内部决策啦。现在我先把com.danga的客户端代码发上来一下下篇发送xmemcached客户端代码。闲话少说,二狗子这就把java代码黏贴上来(各位兄弟可以根据注释读代码)。

 

package test;

import java.util.Date;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
/**
 * 
 * @author 仔仔
 *
 */
public class MemCachedManager  {
	// 创建一个MemCachedClient客户端用来连接mc数据库
    protected static MemCachedClient mcc = new MemCachedClient();
     
    protected static MemCachedManager memCached = new MemCachedManager();
     
    // 设置与缓存服务器的连接池
    static {
        // 配置服务器ip和端口
        String[] servers = { "10.0.16.122:11211" };
        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 );
  
        // 初始化连接池
        pool.initialize();
  
        // 压缩设置,超过指定大小(单位为K)的数据都会被压缩
//        mcc.setCompressEnable( true );
//        mcc.setCompressThreshold( 64 * 1024 );
    }
     
    /**
     * 为保证连接唯一防止打开链接过多,所以不开发构造方法
     *
     */
    protected MemCachedManager()
    {
         
    }
     
    /**
     * 获取实例入口.
     * @return
     */
    public static MemCachedManager getInstance()
    {
        return memCached;
    }
     
    /**
     * 添加一个指定的值到缓存中.
     * @param key
     * @param value
     * @return
     */
    public boolean add(String key, Object value)
    {
        return mcc.add(key, value);
    }
     
    public boolean add(String key, Object value, Date expiry)
    {
        return mcc.add(key, value, expiry);
    }
     
    public boolean replace(String key, Object value)
    {
        return mcc.replace(key, value);
    }
     
    public boolean replace(String key, Object value, Date expiry)
    {
        return mcc.replace(key, value, expiry);
    }
    
    public boolean delete(String key)
    {
        return mcc.delete(key);
    }
     
    /**
     * 根据指定的关键字获取对象.
     * @param key
     * @return
     */
    public Object get(String key)
    {
        return mcc.get(key);
    }
     

    
    public static void main(String[] args) {
    	MemCachedManager mc = MemCachedManager.memCached;;
    	mc.add("echo", "二狗子");
    	System.out.println("mc.get(echo)="+mc.get("echo"));
    	mc.delete("users.id.26887");
	}

	
}

 以上便是一个简单的连接池和几个简单的操作函数。实际项目中一般配置到properties文件然后通过spring配置文件构造连接的方法使用的,但是原理一样(这种调用后期我会下的,各位亲)。

 

需要说明的是,memcached可以存储对象,只要对象序列化后,可以把对象作为流存储到数据库内。这对实际开发用处十分大,比如说我们有一些官方帖子,访问比较频繁,如果存到mc中访问会很给力哦~哈。

今天就说到这里吧。希望我的小代码对各位亲有帮助。

最后说一句壮烈的话,写自己的对象,让别人谈恋爱去吧~~哈哈

你可能感兴趣的:(java memached)