登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: Memcached是什么?[jsp]     [回主站]     [分站链接]
标题
Memcached是什么?[jsp]
clq
浏览(0) + 2010-02-04 14:23:02 发表 编辑

关键字:

Memcached是什么?
Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。

如何使用memcached-Server端?
在服务端运行:
# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211
这将会启动一个占用2G内存的进程,并打开11211端口用于接收请求。由于32位系统只能处理4G内存的寻址,所以在大于4G内存使用PAE的32位服务器上可以运行2-3个进程,并在不同端口进行监听。

如何使用memcached-Client端?(Java版是这样的,参看http://www.whalin.com/memcached/#download)
String serverStr = "218.241.154.12:12321";
String[] serverlist = {serverStr};
//String[] serverlist = { "cache0.server.com:12345", "cache1.server.com:12345" };
//Integer[] weights = { new Integer(5), new Integer(2) };
int initialConnections = 100;
int minSpareConnections = 50;
int maxSpareConnections = 500;
long maxIdleTime = 1000 * 60 * 30; // 30 minutes
long maxBusyTime = 1000 * 60 * 5; // 5 minutes
long maintThreadSleep = 1000 * 5; // 5 seconds
int socketTimeOut = 1000 * 3; // 3 seconds to block on reads
//int socketConnectTO = 1000 * 3; // 3 seconds to block on initial connections. If 0, then will use blocking connect (default)
//boolean failover = false; // turn off auto-failover in event of server down
boolean nagleAlg = false; // turn off Nagle's algorithm on all sockets in pool
//boolean aliveCheck = false; // disable health check of socket on checkout

pool = SockIOPool.getInstance("mymemcache");
pool.setServers( serverlist );
//pool.setWeights( weights );
pool.setInitConn( initialConnections );
pool.setMinConn( minSpareConnections );
pool.setMaxConn( maxSpareConnections );
pool.setMaxIdle( maxIdleTime );
pool.setMaxBusyTime( maxBusyTime );
pool.setMaintSleep( maintThreadSleep );
pool.setSocketTO( socketTimeOut );
pool.setNagle( nagleAlg );
pool.setHashingAlg( SockIOPool.NEW_COMPAT_HASH );
pool.setAliveCheck( true );
pool.initialize();

mCachedClient = new MemCachedClient( "mymemcache" );
mCachedClient.setCompressEnable( false );
mCachedClient.setCompressThreshold(4096);
然后用mCachedClient的set/get/delete方法就可以了。memcached的吞吐量每秒大概能get两万次左右,这比mysql的select提高了好几倍,所以很多网站都用这个来做缓存,如豆瓣。

我 在系统种也用了memcached,我的建议是在有分布式的时候才考虑用memcached,如果只有一台应用服务器就没有必要用memcached,毕 竟Memcached的吞吐量还是有限,本地HashMap每秒可以get一百万次,用本地HashMap做缓存才是最快的。用了分布式后,缓存同步和分 布式session都是比较难处理的问题,所以建议1000万pv/天以下的应用不要用分布式。

clq
2010-2-4 14:24:50 发表 编辑

"

      在高负载网站实践中,把静态内容与动态内容分离已经是比较通用的做法了,在Linux下,比较常用的框架是Lighttpd+Apache+Memcached+Squid。

      其中我们让Apache监听80,作为主站点;Lighttpd监听81,处理静态图片。Apache通过rewirte把静态内容交给Lighttpd处理。当然也可以仅使用Lighttpd作为前端,但Lighttpd处理PHP还不太稳定。

      其他部分,Memcached负责处理缓存、Squid做集群反向代理降低负载。


"


总数:1 页次:1/1 首页 尾页  
总数:1 页次:1/1 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1