Memcached 是一个高性能的分布式内存对象缓存系统,现在很多的大型web应用程序包括Facebook, LiveJournalmixi,Digg等等都在使用memcached来支持他们每天数亿级的页面访问。通过把cache层与他们的架构集成,他们的应用程序在提高了性能的同时,还大大降低了数据库的负载。
Memcached处理的原子是每一个(key,value)对(以下简称kv对),key会通过一个hash算法转化成hash-key,便于查找、对比以及做到尽可能的散列。同时,memcached用的是一个二级散列,通过一张大hash表来维护。
Memcached安装
下包wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
下载完后启动命令
chkconfigmemcached on
servicememcached start
servicememcached status
测试外部连接端口:telnet 192.168.134.xxx11211
使用命令清单
-d选项是启动一个守护进程,
-m是分配给memcache使用的内存数量,单位是MB,例中是10MB
-u是运行Memcache的用户,例中是root,
-l是监听的服务器IP地址,若有多个地址的话,IP地址192.168.134.139 ,
-p是设置Memcache监听的端口,例中设置为12000,最好>1024
-c选项是最大运行的并发连接数,默认是1024,例中设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,例中保存在/tmp/memcached.pid
Memcached服务器运行情况的参数
STAT pid3324 服务器进程ID
STAT uptime467 服务器运行时间,单位秒
STAT time1364197002 服务器当前的UNIX时间
STAT version1.4.4 服务器的版本号
STATpointer_size 64
STAT rusage_user0.000999 该进程累计的用户时间(秒:微妙)
STATrusage_system 0.002999 该进程累计的系统时间(秒:微妙)
STATcurr_connections 10连接数量
STATtotal_connections 13服务器运行以来接受的连接总数
STATconnection_structures 11 服务器分配的连接结构的数量
STAT cmd_get 0取回请求总数
STAT cmd_set 0存储请求总数
STAT cmd_flush 0
STAT get_hits 0请求成功的总次数
STAT get_misses0请求失败的总次数
STATdelete_misses 0
STAT delete_hits0
客户端测试
1、引用com.danga.MemCached.*
2、初始化设置
String[] servers = { "192.168.134.139:11211"};
Integer[] weights = { 3 };
MemCachedClient mcc = new MemCachedClient();
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(servers);
pool.setWeights(weights);
pool.setInitConn(5);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaxIdle(30);
pool.setMaintSleep(30);
pool.initialize();
3、编写操作代码
Object obj =mcc.get("key2");
替换某键值内容:
// 如果key不存在,则返回flase,更新失败
boolean b =mcc.replace("key2","newValue");
Object key3 =mcc.get("key3");
mcc.delete("key3");
Object key3now = mcc.get("key3");