今天闲着无事,便看了一下memcached的使用,感觉用起来还是挺简单的,下面我便简单介绍一下我的安装及使用过程:
1、首先得安装memcached服务,我是在window下试验的,所以我只简单的说一下windows下的安装:
1)memcached服务端下载地址:
http://splinedancer.com/memcached-win32/memcached-1.2.4-Win32-Preview-20080309_bin.zip
2)下载后,解压到d:\memcached下
3)打开cmd命令操作界面,用cd命令切换到d:\memcached目录下,
然后执行安装:
memcached.exe -d install,
安装完成后,再执行启动memcached服务命令:
memcached.exe -d start
以上操作如果没有什么问题的话,则表示memcached服务已经安装成功并可以正常使用了。当然,你可以到windows下的服务管理去查看一下memcached的启动情况,如图:
2、memcached服务端安装完成后,接着开始编写java代码
1)首先要下载相关的jar包,下载地址如下:
https://github.com/gwhalin/Memcached-Java-Client/downloads
下面版本很多,你可以根据自己的需要下载,我现在的是java_memcached-release_2.6.6.zip
2)新建java项目,把java_中memcached-release_2.6.6.zip所有jar包都放到java项目中
3)具体代码:
package com.china.memcached.test;
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemCached
{
// 创建全局的唯一实例
private static MemCachedClient mcc = new MemCachedClient();
private static MemCached memCached = null;
// 设置与缓存服务器的连接池
static {
// 服务器列表和其权重
String[] servers = {"192.168.1.111: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 );
}
/**
* 保护型构造方法,不允许实例化!
*
*/
private MemCached()
{
}
/**
* 获取唯一实例.
* @return
*/
public static MemCached getInstance()
{
synchronized (MemCached.class) {
if(null == memCached){
memCached = new MemCached();
}
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);
}
public boolean set(String key, Object value){
return mcc.set(key, value);
}
public boolean set(String key, Object value, Date expiry){
return mcc.set(key, value, expiry);
}
/**
* 根据指定的关键字获取对象.
* @param key
* @return
*/
public Object get(String key)
{
return mcc.get(key);
}
public static void main(String[] args)
{
MemCached cache = MemCached.getInstance();
cache.add("hello", 234);
System.out.println("get value : " + cache.get("hello"));
cache.delete("hello");
System.out.println("get value : " + cache.get("hello"));
cache.set("hi", "你好,中国");
System.out.println("get value : " + cache.get("hi"));
}
}
执行main方法,可以打印出如下结果:
get value : 234
get value : null
get value : 你好,中国
以上便是我今天的小实验,如有什么不足的地方,请各位多多指点。