Memcached-高性能的分布式内存缓存服务器
Memcached是高性能的分布式内存缓存服务器,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等, 由国外社区网站 LiveJournal 的开发团队开发。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。LiveJournal 团队开发了包括 Memcached、MogileFS、Perlbal 等不错的开源项目。
· 官方网站:http://www.danga.com/memcached/
Memcached的主要特点
·基于C/S架构,协议简单
·基于libevent的事件处理
·libevent: http://www.monkey.org/~provos/libevent/
http://www.cnblogs.com/yangw/p/data:image/png;base64,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
安装
·基于libevent事件处理机制 http://www.monkey.org/~provos/libevent/
–# tar zxvf libevent-2.0.21-stable.tar.gz
–./configure --prefix=/usr/local
–make
–sudo make install
·
·memcached: http://memcached.org/ # tar zxvf memcached-1.4.15.tar.gz
–./configure --with-libevent=/usr/local
–make
–make install
其他说明,
在 Memcached 中可以保存的item数据量是没有限制的,只要内存足够
Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启进程
最大30天的数据过期时间, 设置为永久的也会在这个时间过期,常量
REALTIME_MAXDELTA 60*60*24*30 控制
最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250 控制
单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576 进
行控制,它是默认的slab大小
最大同时连接数是200,通过 conn_init()中的freetotal 进行控制,最大软连接数是1024,通过settings.maxconns=1024 进行控制
Memcached客户端 参考: http://code.google.com/p/memcached/wiki/Clients
memcached 搭建
在windows2007服务器中安装memcached首先要看服务器所用系统是32位的还是64位的,64位系统可能会需要一个MSVCR71.DLL动态链接文件,
该文件在memcached-1.2.5-win32-bin解压包中就有,更高版本的包已解决了这个问题,在windows2007中由于安全性的提高,
在命令行中执行memcached.exe -d install将会提示你服务安装失败或服务已安装。这样你以管理员的身份打开命令行,可以解决。
Memcached服务器的配置过程
1.下载memcached-1.4.5-win32.zip包
下载地址:http://download.iyunv.com/ (回头我给一个百度网盘地址)
2.用管理员身份打开cmd >cd memcached
>memcached-1.4.5.exe -d install安装memcached缓冲服务
>memcached-1.4.5.exe -d start 开启memcached服务,默认端口为11211,内存分配为64MB,块大小增长因子1.25.最大同时连接数为1024,最小分配空间为48
>memcached-1.4.5.exe -d runservice -l 127.0.0.1 -m 2000 -c 1024 -p 11255
下面3.其实可以不作,我们就是用默认的端口等就合适
3.在命令行下可能不会生效所以得修改注册表 开始-->运行-->regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 中的
ImagePath项,原值为"d:\memcached\memcached-1.4.5.exe" -d runservice ,在其后加上 -p 11255 -U 11255 -m 2000 -c 1024 -f 1.25 -n 48 退出
4.右击我的电脑-->属性-->管理-->服务-->memcached Service 将服务重启。
5.测试服务器
开启telnet功能,进入命令行模式,输入telnet 192.168.1.200 11255 Stats 查看memcached的状态。
Memcache 在java客户端的配置过程
1.下载java_memcached-release_2.5.1.jar包
2.将java_memcached-release_2.5.1.jar包复制到JAVA项目的lib目录下,然后我们编写代码进行测试。
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();
// 设置与缓存服务器的连接池
static {
// 服务器列表和其权重
String[] servers = { "192.168.1.200:11255" };
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() {
}
/**
* 获取唯一实例
*/
public static MemCachedManager getInstance() {
return memCachedManager;
}
/**
* 添加一个指定的值到缓存中. *
* @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("hello", 234);
System.out.print("get value : " + cache.get("hello"));
}
}
3.测试运行状态。
页:
[1]