1:下载安装
wget http://memcached.org/files/memcached-1.4.20.tar.gz
依赖库
wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.17-stable.tar.gz
2:启动memcached
/usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
想开机自动启动的话,只需在/etc/rc.d/rc.local中加入一行,上面命令
有人用以下命令:
/usr/local/memcached/bin/memcached -d -m 20 -p 11211 -u apache
上面有些东西可以参考一下:即,ip不指定时,默认是本机,用户,最好选择是:apache 或 deamon
这样,也就是属于哪个用户的服务,由哪个用户启动。
转自:
http://www.cnblogs.com/technet/archive/2011/09/11/2173485.html
测试代码:
package com.danga.MemCached.test;
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemCachedManager {
protected static MemCachedClient mcc = new MemCachedClient();
protected static MemCachedManager memCachedManager = new MemCachedManager();
/**
* 获取唯一实例.
*
* @return
*/
public static MemCachedManager getInstance() {
return memCachedManager;
}
static {
// 服务器列表和其权重
String[] servers = { "192.168.10.69: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);
// initialize the connection pool
// 初始化一些值并与MemcachedServer段建立连接
pool.initialize();
// lets set some compression on for the client
// compress anything larger than 64k
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64 * 1024);
}
/**
* 添加一个指定的值到缓存中.
*
* @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);
}
/**
* 根据指定的关键字获取对象.
*
* @param key
* @return
*/
public Object get(String key) {
return mcc.get(key);
}
public static void main(String[] args) {
MemCachedManager cache = MemCachedManager.getInstance();
// cache.add("test", 234);
System.out.println(cache.get("test"));;
}
}