1.下载
http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz
http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
2.安装
安装libevent
tar xvf libevent-2.0.12-stable.tar.gz
cd libevent-2.0.12-stable
./configure -prefix=/usr
make
make install
查看安装是否成功
ls -all /usr/lib | grep libevent
安装memcached
tar xvf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure -with-libevent=/usr
make
make install
查看安装是否成功
ls -all/usr/local/bin/mem*
3.开防火墙,假设使用端口11211
vi /etc/sysconfig/iptables
添加
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT
保存退出
重启服务使刚才的设置生效
service iptables restart
搞定
启动memcached
/usr/local/bin/memcached -d -m 128 -u root -l 192.168.49.130 -p 11211 -c 1024 -P /tmp/memcached.pid
参数说明
-d 启动一个守护进程
-m 分配给Memcache使用的内存数量(MB)
-u 运行Memcache的用户
-l 是监听的服务器IP地址
-p Memcache监听的端口
-c 最大运行的并发连接数,默认是1024
-P 设置保存Memcache的pid文件
关闭memcached
1.查询memcached的pid
cat /tmp/memcached.pid
显示22376
如果没指定-P参数,则先ps -A查看进程,找出memcached的pid,例如我这里显示的是
22182 ? 00:00:00 memcached
2.kill pid
例如kill 22182
将memcached加入启动项
vi /etc/rc.d/rc.local
在最后加入启动命令
/usr/local/bin/memcached -d -m 128 -u root -l 192.168.49.130 -p 11211 -c 1024 -P /tmp/memcached.pid
保存退出
添加到服务
vim /etc/rc.d/rc.local
添加
/usr/local/bin/memcached -d -m 128 -u root -l 192.168.49.130 -p 11211 -c 1024 -P /tmp/memcached.pid
测试
package com.gary.test;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class TestMemcached {
String[] servers = { "192.168.49.130:11211" };
Integer[] weights = { 3 };
MemCachedClient mcc = new MemCachedClient();
SockIOPool pool = SockIOPool.getInstance();
public TestMemcached() {
init();
}
private void init(){
pool.setServers(servers);
pool.setWeights(weights);
pool.setInitConn(5);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaxIdle(30);
pool.setMaintSleep(30);
pool.initialize();
}
public void testPut() {
for (int i = 1; i <= 3; i++) {
// 如果以前存在,则不去更新
boolean b = mcc.add("key" + i, "value" + i);
System.out.println("key" + i +" - result: " + b);
}
}
public void testReplace() {
// 如果key不存在,则返回flase,更新失败
boolean b = mcc.replace("key2", "newValue");
System.out.println("update " + b);
}
public void testGet() {
Object obj = mcc.get("key2");
System.out.println(obj);
}
public void testDelete() {
Object key3 = mcc.get("key3");
System.out.println("key3:" + key3);
mcc.delete("key3");
System.out.println("after delete");
Object key3now = mcc.get("key3");
System.out.println("key3 now:" + key3now);
}
public static void main(String args[]) {
TestMemcached tm = new TestMemcached();
tm.testPut();
tm.testReplace();
tm.testGet();
tm.testDelete();
//最后关闭池
tm.pool.shutDown();
}
}
测试结果
key1 - result: true key2 - result: true key3 - result: true update true newValue key3:value3 after delete key3 now:null