memcache java client_Memcache客户端安装和使用

一、memcached客户端安装

Memcached本身是使用C开发的,客户端可以是php、C#、或者java。我是做java的,所以这里只介绍基于java的客户端。

Memcached目前有三种java的客户端

(1)memcached client for java

较早推出的memcached JAVA客户端API,应用广泛,运行比较稳定。

(2)spymemcached

A simple, asynchronous, single-threaded memcached client written in java.

支持异步,单线程的memcached客户端,用到了java1.5版本的concurrent和nio,存取速度会高于前者,但是稳定性不好,测试中常报timeOut等相关异常。

(3)xmemcached

XMemcached同样是基于java nio的客户端,java nio相比于传统阻塞io模型来说,有效率高(特别在高并发下)和资源耗费相对较少的优点。传统阻塞IO为了提高效率,需要创建一定数量的连接形成连接池,而nio仅需要一个连接即可(当然,nio也是可以做池化处理),相对来说减少了线程创建和切换的开销,这一点在高并发下特别明显。因此XMemcached与Spymemcached在性能都非常优秀,在某些方面(存储的数据比较小的情况下)Xmemcached比Spymemcached的表现更为优秀,具体可以看这个Java

Memcached Clients Benchmark。

本人属于学习,选择了较为稳定的memcached client for java。下面以 memcached client for java讲解下客户端使用方法。

1.安装。

点击进入 java memcached client的jar包下载地址

由于目前java memcached java memcached client要依赖slf4j-simple、slf4j-api、commons-pool三个包,因此我们需要为其编辑一个pom文件,将java memcached client的jar包和pom文件一起安装,解决java memcached client对其他jar包的依赖。

安装步骤:

1. 下载 memcached.jar(放到d:/)

2. 编写 java-memcached-2.6.6.pom文件(d:/)

3. 执行安装命令:

mvn install:install-file-Dfile=d:/java_memcached_2.6.6.jar-DpomFile=d:/java-memcached-2.6.6.pom

4. 在 项目中引入memcache

com.danga

java-memcached

2.6.6

java-memcached-2.6.6.pom的内容为:

4.0.0com.danga

java-memcached2.6.2

org.slf4j

slf4j-simple

1.6.2

org.slf4j

slf4j-api

1.6.2

commons-pool

commons-pool

1.5.6

二、DEMO的实现

memcached包结构

cac9afac89369d95c16c1b7ebb035fd0.png

在Dao层编写所对应的memcached的单例,代码如下:

/** * memcache 客户端 * * Created by ydw on 15/4/15. */

public class MemCacheDao {

// 创建全局的唯一实例

protected static MemCachedClient mcc = new MemCachedClient();

protected static MemCacheDao memCachedManager = new MemCacheDao();

// 设置与缓存服务器的连接池

static {

// 服务器列表和其权重

String[] servers = {"Ip:port"};

Integer[] weights = {3};

// 获取soket 连接池的实例对象

SockIOPool pool = SockIOPool.getInstance();

// 设置服务器信息

pool.setServers(servers);

pool.setWeights(weights);

//设置初始连接数、最小和最大连接数以及最大处理时间

pool.setInitConn(5);

pool.setMinConn(5);

pool.setMaxConn(500);

pool.setMaxIdle(1000*60*60*6);

// 设置主线程的睡眠时间

pool.setMaintSleep(30);

// 设置TCP的参数和连接超时

pool.setNagle(false);

pool.setSocketTO(3000);

pool.setSocketConnectTO(0);

// 初始化连接池

pool.initialize();

}

/** * 私有构造方法,不允许外部实例化! */

protected MemCacheDao(){

}

/** * 获取唯一实例 */

public static MemCacheDao getInstance() {

return memCachedManager;

}

/** * 添加一个指定的值到缓存中 */

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);

}

/** * 修改缓存 *@param key *@param value *@return */

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 Object get(String key) {

return mcc.get(key);

}

public static void main(String [] args) {

MemCacheDao cache = MemCacheDao.getInstance();

cache.add("hello", 234);

System.out.println("get value:" + cache.get("hello"));

}

}

在service层,使用下面语句,对mecached client进行实例化,便可以操作memcache服务器。

// cache client dao MemCacheDao cacheDao=MemCacheDao.getInstance();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值