日期:2014-05-16 浏览次数:20762 次
一、
Memcached安装和使用:
官网:http://monkey.org/~provos/libevent/
libevent
下载:http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz
Memcached
官网:http://www.danga.com/memcached
Memcached
下载:http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz
二、
安装 libevent
# tar zxvf libevent-1.4.9-stable.tar.gz
# cd libevent-1.4.9-stable
# ./configure --prefix=/usr
# make
# make install
?
安装 Memcached
# tar zxvf memcached-1.2.6.tar.gz
# cd memcached-1.2.6
# ./configure --prefix=/usr/local
# make
# make install
三、
安装成功启动
./memcached -d -u root -m 512 127.0.0.1 -p 11211
到这里,看到memcached已经启动,说明安装成功。
如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`
也可以启动多个守护进程,不过端口不能重复。
memcache启动参数说明:
-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
四 、代码部分
1.MemCacheClient类
package com.uitl; import java.util.Date; import java.util.Map; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; /*** * * @author ZhuangZi * @version $Id: MemCacheClient.java,v 0.1 2013-3-5 下午04:35:56 ZhuangZi Exp $ */ public class MemCacheClient { protected static MemCachedClient memcachedClient = new MemCachedClient(); protected static String cacheIP = "192.168.3.27:11211"; static { // 服务器列表和其权重,memcached地址和端口号 String[] servers = { cacheIP }; Integer[] weights = { 3 }; // 获取socke连接池的实例对象 SockIOPool pool = SockIOPool.getInstance(); // 设置服务器信息 pool.setServers(servers); pool.setWeights(weights); // 设置初始连接数、最小和最大连接数以及最大空闲时间 pool.setInitConn(5); pool.setMinConn(5); pool.setMaxConn(500); pool.setMaxIdle(1000 * 60 * 60 * 6); // 设置主线程的睡眠时间秒 pool.setMaintSleep(30); // 关闭nagle算法 pool.setNagle(false); // 设置 读取 超时3秒钟 pool.setSocketTO(3000); // 不设置连接超时 pool.setSocketConnectTO(0); // 初始化一些值并与MemcachedServer段建立连接 pool.initialize(); } /*** * 读取缓存 * @param key * @param times * @return */ public static String getValue(String key, int times) { String value = ""; try { value = memcachedClient.get(key, times).toString(); } catch (Exception e) { e.printStackTrace(); return null; } return value; } /*** * 设置缓存 * @param key * @param value * @param times * @return */ public static boolean setValue(String key, String value, int times) { boolean result = false; try { System.out.println("********"); result = memcachedClient.set(key, value, new Date(System.currentTimeMillis() + times * 1000)); System.out.println("*1*******"+result); } catch (Exception e) { e.printStackTrace(); return false; } return result; } public static boolean setValue(String key, String value) { boolean result = false; try { result = memcachedClient.set(key, value); } catch (Exception e) { e.printStackTrace(); return false; } return result; } /*** * 删除缓存 * @param key * @return */ public static boolean delete(String key) { return memcachedClient.delete(key); } @SuppressWarnings("unchecked") public static Map getStatus() { Map stats = memcachedClient.stats(); return stats; } public Object[] getMultiArray(String[] sKeys) { return memcachedClient.getMultiArray(sKeys); } public static void main(String[] args) { // System.out.println(setValue("2", "密密麻麻",100)); // System.out.println(getValue("2", 1)); // delete("eve