- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Memcached_原理详解
* Memcached安装和使用: Memcached 和 java 结合使用 下载memcached java client:/memcached/#download 解压后将java_memcached-release_2.0.1.jar jar包添加到工程的classpath中 /*Memcache服务器默认端口是11211*/ String[] servers = { :11211 }; SockIOPool pool = SockIOPool.getInstance(); pool.setServers(servers); pool.setFailover(true); pool.setInitConn(10); pool.setMinConn(5); pool.setMaxConn(250); pool.setMaintSleep(30); pool.setNagle(false); pool.setSocketTO(3000); pool.setAliveCheck(true); pool.initialize(); MemCachedClient memCachedClient = new MemCachedClient(); for (int i = 0; i 10; i++) { /*将对象加入到memcached缓存*/ boolean success = memCachedClient.set( + i, Hello!); /*从memcached缓存中按key值取对象*/ String result = (String) memCachedClient.get( + i); System.out.println(String.format(set( %d ): %s, i, success)); System.out.println(String.format(get( %d ): %s, i, result)); } * Memcache三种java客户端的比较 Memcache client for java:较早推出的memcache java客户端API,应用广泛,运行比较稳定。 spymemcached:A simple, asynchronous, single-threaded memcached client written in java. 支持异步,单线程的memcached客户端,用到了java1.5版本的concurrent和nio,存取速度会高于前者,但是稳定性不好,测试中常 报timeOut等相关异常 Xmemcached是基于java nio实现的高性能可扩展的memcached客户端。实际上是基于我实现的一个nio框架 /p/yanf4j/的基础上实现的(目前1.1.3是基于yanf4j 0.7.0,而1.2.0-RC1版本基于1.0-SNAPSHOT)。 另外我们也可以自己写soket,实现memcache客户端。 Memcached安装和使用: * Memcache在大型网站中的使用策略: Memcache在大型网站中的部署策略 基于memcached的slab和dump的内存管理方式,它产生的内存碎片比较少,不需要OS去做繁 杂的内存回收,所以它对CPU的占用率那是相 当的低。所以建议将它跟占用CPU较高的WEB服 务器一起使用来节省成本。当然如果你有大量的廉价PC,那用来专门做memcached服务器也 不错。由 于32位操作系统中,每个进程最多只能使用2GB内存,所以如果你有大内存的话, 可以以daemon的方式启动两个以上的memcached服务,或者干 脆用64位的CPU和OS。 * Memcache缓存使用策略: memcached主要的作用是为减轻大访问量对数据库的冲击,所以一般的逻辑是首先从memcached中读取数据,如果没有就从数据库中读取数据 写入到memcache中,等下一次读取的时候就可以从memcached中读取了。但在项目中的具体应用策略(也就是哪些数据应该缓存?怎么样缓存?过 期策略?)就是个问题了。它的一个总原则是将经常需要从数据库读取的数据缓存在memcached中。这些数据也分为几类: 一、经常被读取并且实时性要求不强可以等到自动过期的数据。
文档评论(0)