您的位置:首页 > 数据库 > Memcache

JAVA memcached初次接触

2012-03-13 09:51 302 查看
一、在centos系统下安装了 memcached

1.下载memcached和libevent,放到 /tmp 目录下

# cd /tmp

# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz

# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz

2.先安装libevent:

# tar zxvf libevent-1.2.tar.gz

# cd libevent-1.2

# ./configure –prefix=/usr

# make

# make install

3.测试libevent是否安装成功:

# ls -al /usr/lib | grep libevent

lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3

-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3

-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a

-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la

lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3

4.安装memcached,同时需要安装中指定libevent的安装位置:

# cd /tmp

# tar zxvf memcached-1.2.0.tar.gz

# cd memcached-1.2.0

# ./configure –with-libevent=/usr

# make

# make install

如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。

安装完成后会把memcached放到 /usr/local/bin/memcached ,

5.测试是否成功安装memcached:

# ls -al /usr/local/bin/mem*

-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached

-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug

memcached的基本设置:

1.启动Memcache的服务器端:

# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.237.77 -p 12000 -c 256 -P /tmp/memcached.pid

-d选项是启动一个守护进程,

-m是分配给Memcache使用的内存数量,单位是MB,这里是10MB,

-u是运行Memcache的用户,这里是root,

-l是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址192.168.237.77,

-p是设置Memcache监听的端口,这里设置了12000,最好是1024以上的端口,

-c选项是最大运行的并发连接数,默认是1024,这里设置了256,按照你服务器的负载量来设定,

-P是设置保存Memcache的pid文件,这里是保存在 /tmp/memcached.pid,

2.如果要结束Memcache进程,执行:

# kill `cat /tmp/memcached.pid`

也可以启动多个守护进程,不过端口不能重复。

二、编写JAVA测试程序

导jar包:将java_memcached-release_1.6.jar文件复制到java项目的lib目录下。

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import com.danga.MemCached.MemCachedClient;

import com.danga.MemCached.SockIOPool;

public class MemCachedManager {

// 创建全局的唯一实例

protected static MemCachedClient mcc = new MemCachedClient();

protected static MemCachedManager memCached = new MemCachedManager();

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

static {

// 服务器列表和其权重

String[] servers = { "192.168.237.77:12000" };

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 cache = MemCachedManager.getInstance();

long startDate=System.currentTimeMillis();

for (int i = 0; i < 10; i++) {

cache.add("test"+i , "中国");

}

long endDate=System.currentTimeMillis();

long nowDate=(endDate-startDate)/1000;

System.out.println(nowDate);

System.out.print( " get value : " + cache.get( "test8" ));

cache.delete("test8");

System.out.print( " get value : " + cache.get( "test8" )+"你娘的,好辛苦!");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: