java连接memcached示例代码

1.下载memcached的windows版本,地址在http://code.jellycan.com/memcached/
2.解压到任意目录,然后用管理员身份cd到你的解压目录
3.memcached.exe -d install
4.memcached.exe -d start
memcached安装完成。


https://github.com/gwhalin/Memcached-Java-Client/downloads
java_memcached-release_2.5.0.zip为java的连接客户端
1.解压,将里面的jar包拷贝到项目的lib目录下

使用以下代码调用


package info.frady;


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

/**
* Oct 15, 2011
*/
public class MemCachedTest {
private static MemCachedClient mcc = new MemCachedClient();

static {
String[] servers = {"127.0.0.1:11211"};
//创建一个连接池
SockIOPool pool = SockIOPool.getInstance();
//设置缓存服务器
pool.setServers(servers);
//设置初始化连接数,最小连接数,最大连接数以及最大处理时间
pool.setInitConn(50);
pool.setMinConn(50);
pool.setMaxConn(500);
pool.setMaxIdle(1000 * 60 * 60);
//设置主线程睡眠时间,每3秒苏醒一次,维持连接池大小
//maintSleep 千万不要设置成30,访问量一大就出问题,单位是毫秒,推荐30000毫秒。
pool.setMaintSleep(3000);
//关闭套接字缓存
pool.setNagle(false);
//连接建立后的超时时间
pool.setSocketTO(3000);
//连接建立时的超时时间
pool.setSocketConnectTO(0);
//初始化连接池
pool.initialize();
}

protected MemCachedTest(){

}

public static MemCachedClient getInstance(){
return mcc;
}

public static void main(String[] args) {

MemCachedClient cache = MemCachedTest.getInstance();


cache.add("frady", "this is a test");
System.out.println(cache.get("frady"));

}
}


以下是对象的封装

package info.frady;

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

/**
* Oct 15, 2011
*/
public class MemTest {
// 创建一个 memcached 客户端对象

protected static MemCachedClient mcc = new MemCachedClient();

// 创建 memcached连接池

static

{ // 指定memcached服务地址

String[] servers =

{ "127.0.0.1:11211","127.0.0.1:11211", "127.0.0.1:11211" };

// 指定memcached服务器负载量

Integer[] weights ={ 3, 3, 2 };

// 从连接池获取一个连接实例

SockIOPool pool = SockIOPool.getInstance();

// 设置服务器和服务器负载量

pool.setServers( servers );

pool.setWeights( weights );

// 设置一些基本的参数

//设置初始连接数5 最小连接数 5 最大连接数 250

//设置一个连接最大空闲时间6小时

pool.setInitConn( 5 );

pool.setMinConn( 5 );

pool.setMaxConn( 250 );

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

// 设置主线程睡眠时间

// 每隔30秒醒来 然后

// 开始维护 连接数大小

pool.setMaintSleep( 30 );

// 设置tcp 相关的树形

// 关闭nagle算法

// 设置 读取 超时3秒钟 set the read timeout to 3 secs

// 不设置连接超时

pool.setNagle( false );

pool.setSocketTO( 3000 );

pool.setSocketConnectTO( 0 );

// 开始初始化 连接池

pool.initialize();

// 设置压缩模式

//如果超过64k压缩数据

mcc.setCompressEnable( true );

mcc.setCompressThreshold( 64 * 1024 );

}

public static void main(String args[]) {
User u1 = new User();
u1.setUserName("frady");
u1.setEmail("weimengiq@126.com");
mcc.add("fradyt", u1);

User u2 = (User) mcc.get("fradyt");
System.out.println("email=" + u2.getEmail());
u2.setEmail("weimengiq@gmail.com");
mcc.replace("fradyt", u2);

u2 = (User) mcc.get("fradyt");
System.out.println("email=" + u2.getEmail());


}

}



此处要注意User得实现序列化

package info.frady;

import java.io.Serializable;

/**
* Oct 15, 2011
*/
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1003272426055966138L;
private String userName;
private String email;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}



查看cache的状态

Map <String, Map<String, String>> stats = cache.stats();
for (Map.Entry<String, Map<String, String>> m : stats.entrySet()) {
System.out.println(m.getKey());
Map<String, String> values=m.getValue();
for (Map.Entry<String, String> v : values.entrySet()) {
System.out.print(v.getKey()+":");
System.out.println(v.getValue());
}
}


清空所有的对象

MemCachedClient mc = new MemCachedClient();
mc.flushAll();


据说2.5有连接数量过多导致oom的bug,附件提供了2.6.1版本的包。
官方地址:https://github.com/gwhalin/Memcached-Java-Client/downloads
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值