楼主好像并不很了解memcached,我们公司已经用了好久,非常稳定,非常快,并发连接可以上到1w,我手头的应用常常保持在3-5k;它的快不仅是
因为用了libevent,还因为它采取了“用内存冗余换存取速度”的内存管理策略,网上有文章专门分析它的内存分配回收管理的源码,讲的很清楚,在这上
面jboss
cache、ehcache、oscache跟它没法比;memcached的集群也非常好,听说国外有200+的memcached集群,我们也有这方
面的尝试,效果也很好,一台down掉根本不会引起其他机器down掉,只是这台的数据丢了,需要慢慢积累回来;而且支持多客户端,java、php、
python、ruby可以共享数据,就把它当作数据库用。
我的建议是:你的应用访问量比较大,对响应速度要求很高,对数据一致性要求一般时,用
它,挡在数据库前面,非常爽(memcached是互联网公司开发的,正好满足这三个条件);如果应用不忙,用用ehcache就行了。
to oldyoungj,
ehcache、oscache
的数据都是在本机服务器上的,访问时走的仅是系统总线。而memcached走的是网络。俺不相信网络传输速度还会快过系统总线。
并不需要那么快。我们的应用读取memcached的网络流量是每秒有2MB的流量,是读取数据库的网络流量的大约5倍。但是你要知道现在随便的
PC机都是千兆网卡,因此memcached的get/set操作的延时非常少,并不比echache的get/set慢多少。在一个完整的web应用当
中,我的压力测试表明,性能差异 <= 5%
论坛、sns这样的应用,会使用多种技术进行缓存。
拿sohu的bbs来说吧,pv为5000w,峰值8000w
其中帖子、评论读写频繁,其他部分读频繁。
帖子列表、评论列表使用c开发(其中排序算法很巧妙),socket调用
帖子、评论内容使用squid缓存
其他读频繁的部分使用memcached、squid、定时生成静态页面等多种技术。
数据库用mysql,分表。
个人认为,小规模应用中,jvm级别的cache可以用用,memcached可用可不用
大规模网站应用,肯定是系统水平切分,多种cache结合。
memcached非常快,但我没说过比本机的ehcache还快,但用本地缓存有两点不爽:
1.缓存放在内存or放在磁盘?应用重启会导致内存缓存丢失,放在磁盘又不够快。内存开多大合适?如果是大访问量应用,缓存对象集中淘汰可能引起
服务器load急剧波动(我们吃过亏,现在也开ehcache,但缓存对象的上限开的很小)
2.集群应用里缓存对象如何共享?jboss cache用的是广播,访问量大的时候,可以把你的服务拖死,这个我们也吃过亏
当然,有人谈到了sohu的例子,一旦访问量大了,各种缓存都得用着,目前我们就是squid + memcached +
ehcache。squid也是好东西,但缓存内容删除不太灵活,比较适合web1.0,比如新浪搜狐的新闻
另外,java memcached client用1.6好了,没必要升级到2.1,2.X似乎还不太稳定。
分享到:
相关推荐
"20120102 net下memcached 分布式缓存系统应用" 这个标题表明这是一个关于在.NET环境中使用Memcached作为分布式缓存系统的实践教程或参考资料。时间戳“20120102”可能指的是资料的创建日期,暗示了这是较早时期的...
Xmemcached是一个高性能、线程安全的Java实现的分布式缓存系统,专为Memcached设计。这个库的主要目标是提供简单、快速、无阻塞的客户端API,以便于开发人员在Java应用程序中集成和利用Memcached的强大功能。下面将...
3. "ConsistenHashingandRandomTreesDistributedCachingprotocolsforrelievingHotSpotsontheworldwideweb.pdf":这篇论文深入探讨了一致性哈希算法,可能是从...,以及在分布式缓存系统(如Memcached)中应用的效果...
1. **Memcached** - 是一个分布式内存对象缓存系统,用于减轻数据库负载,通过将数据存储在内存中来加速动态Web应用。它支持多语言,提供简单的键值对存储,适合短期存储非结构化数据。 2. **Ehcache** - 是一个...
知识点包括了缓存架构设计、数据一致性保证、缓存失效策略、以及常见的分布式缓存系统(例如Redis和Memcached)。缓存系统的设计必须考虑缓存雪崩、穿透和击穿等问题的解决方案。 第5章中,消息队列的实现部分讲解...
memcached是一个分布式内存对象缓存系统,常用于提高Web应用程序的性能,通过存储数据到内存中,避免了频繁的数据库查询,从而提高了响应速度。 **描述分析:** "memcached+asp.net4.0 的demo" 描述提到这是一个...
Memcached是一款高性能、轻量级的分布式内存对象缓存系统,主要用于减少数据库负载,提升应用性能。它通过存储数据到内存中,实现了快速访问。Memcached支持多语言客户端,采用键值对存储模式,适用于存储小块数据,...
综上所述,这份文档全面探讨了分布式环境下的信息缓存,从方法到具体实现,从硬件配置到软件设计,再到存储介质的选择和管理,涵盖了构建高效分布式缓存系统所需的关键技术和实践。对于理解并优化大型分布式系统的...
Memcached是一款高性能、分布式内存对象缓存系统,用于在动态系统中减少数据库负载,通过将数据存储在内存中来加速访问。它是一个简单的键值存储系统,最初由Danga Interactive开发,现在被广泛应用于各种Web应用...
此外,分布式版本控制(如Git)、分布式数据库(如Cassandra、HBase)、分布式缓存(如Redis、Memcached)和分布式文件系统(如Hadoop HDFS)也是本书会覆盖的重要主题。这些技术在大数据处理、云计算和实时数据分析...
标题“memcached在SSH中的配置”指的是如何在SSH(Spring Security、Struts2和Hibernate)这个Java Web开发框架组合中集成和配置缓存系统memcached。memcached是一个高性能、分布式内存对象缓存系统,常用于加速动态...
`memcached`是一种高性能、分布式内存对象缓存系统,它广泛用于减轻数据库负载,提高Web应用的响应速度。它通过在内存中存储数据,提供快速的数据访问,从而减少了对数据库的直接访问次数。在这个场景中,我们讨论的...
《Memcached权威指南》是一本深入探讨分布式内存缓存系统Memcached的专业书籍,旨在帮助读者全面理解并熟练掌握这一高效能的技术。Memcached是互联网上广泛使用的开源软件,用于缓解数据库负载,提升Web应用的性能。...
Java Memcached 2.0.1 是一个针对Java平台的Memcached客户端库,它使得Java开发者能够方便地与Memcached缓存系统进行交互。Memcached是一个高性能、分布式内存对象缓存系统,广泛用于减轻数据库负载,提高Web应用的...
分布式缓存系统如Memcached和Redis,它们提供了高效的键值存储,可以在集群环境中快速获取和更新数据,避免了昂贵的跨服务器通信。 设置缓存过期时间是必要的,因为缓存的数据可能存在时效性问题,如新闻、价格等...
memcached 是一个高性能、分布式内存对象缓存系统,它广泛用于加速动态Web应用,通过在内存中缓存数据和对象来减少数据库访问,从而提高性能。 **描述分析:**描述中的"memcached For NET 3.5"进一步强调了这是针对...
“memcached安装及java应用使用memcached”这一标题暗示了我们要讨论的是一个关于分布式内存缓存系统——memcached的安装过程以及如何在Java应用程序中使用它。Memcached是一个高性能、轻量级的分布式内存对象缓存...