`
玉玲珑_gooner
  • 浏览: 1609 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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 客户端调用 memcached分布式的高速缓存系统

    JAVA 客户端调用 memcached分布式的高速缓存系统

    memcached linux安装说明+ java客户端调用例子

    memcached linux安装说明+ java客户端调用例子

    memcached client for java

    memcached的java客户端jar包,方便调用memcached的服务

    memcached1.4.13(32、64位windows)在.Net中使用.zip

    memcached1.4.13(32、64位windows)在.Net中使用,引用 Memcached.ClientLibrary.dll,封装成一个单例类,调用方便。

    Memcached-Client源码

    memcached在Java客户端调用时的源码。memcached源码中有一个bug,ip的传参形式为192.168.1.1:12301,到了sockiopool.java中用split(";")来解析ip和端口。这种情况在ipv6的环境下是行不通的。因为v6地址是[xxxx:xx:...

    memcached1

    那么我们就可以通过简单的像main方法中操作的一样存入一个变量,然后再取出进行查看,我们可以看到先调用了add,然后再进行get,我们运行一次后,234这个值已经被我们存入了memcached的缓存中的了,我们将main方法...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java开源包1

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包4

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包101

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包11

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包6

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包9

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包8

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包10

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    29道memcached面试题含答案(很全)

    其中,get命令用于获取存储在Memcached中的数据,set命令用于存储数据,delete命令用于删除数据,quit命令用于断开客户端连接。 此外,Memcached还具有高可用性和容错性,可以在多个服务器上部署形成一个集群,以...

    java开源包5

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

    java开源包3

    一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源...

Global site tag (gtag.js) - Google Analytics