Memcached安装与使用
WINDOW
1. memcached-win32-1.4.4-14在D:\memcached
2. 在终端(也即cmd命令界面)下输入 ‘D:\memcached\memcached.exe-d install' 安装
3. 再输入: ‘D:\memcached\memcached.exe-d start' 启动。(需要注意的: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了)
LINUX
1. 首先下载memcached 和 libevent 包。 Memcached用到了libevent这个库用于Socket的处理。下面是下载的两个包文件:
libevent-1.4.12-stable.tar.gz
memcached-1.4.3.tar.gz
2. 上传这两个包到/tmp/chenxinhan/memcached目录(自建目录)下。
3. 解压并安装:
tar -zxf libevent-1.4.12-stable.tar.gz
tar -zxf memcached-1.4.3.tar.gz
cd libevent-1.4.12-stable
./configure --prefix=/usr
make
make install
cd ../ memcached-1.4.3
./configure --with-libevent=/usr
make
makeinstall
4. 执行 ldconfig
4. 启动Memcached
完成上述操作后,memcached被安装/usr/local/bin/目录下。启动Memcache的服务器的命令:
/usr/local/bin/memcached -d -m 1024 -u root-l 192.168.0.1 -p 12001 -c 256 -P /tmp/chenxinhan/memcached.pid
参数说明:
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,这里是1GB,
-u 是运行Memcache的用户,这里是root,
-l 是监听的服务器IP地址,如果有多个地址的话,以逗号隔开。这里指定了服务器的IP地址192.168.0.1,
-p 是设置Memcache监听的端口,我这里设置了12001,最好是1024以上的端口,
-c 选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P 是设置保存Memcache的pid文件,我这里是保存在/tmp/chenxinhan/memcached.pid,
5. 结束Memcache进程,执行:
kill `cat /tmp/chenxinhan/memcached.pid`
或者:
ps -aux | grep memcache
然后直接kill掉memcache进程。
6. 可以启动多个守护进程,但是端口不能一样。这样就可以在一台机器上拥有多个Memcached
以同样的方式在192.168.0.1上安装memcached
7. 代码测试:
public class TestMemcached {
// 创建全局的唯一实例
protected static MemCachedClient mcc = new MemCachedClient();
protected static TestMemcached memCached = new TestMemcached();
// 设置与缓存服务器的连接池
static {
// 服务器列表和其权重
String[] servers = { "192.168.0.1:12001","192.168.0.2:12001" };
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 TestMemcached()
{
}
/**
* 获取唯一实例.
* @return
*/
public static TestMemcached 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);
}
/**
* 根据指定的关键字获取对象.
* @param key
* @return
*/
public Object get(String key)
{
return mcc.get(key);
}
public static void main(String[] args)
{
TestMemcached cache = TestMemcached.getInstance();
cache.add("data" , "hello world");
String st=cache.get("data");
System.out.println(st);
}
}