.Net的Cache和Memcached有什么优缺点?

ASP.net中,直接可以使用类似Cache["key1"]的方式读写内存,而Memcached也是键值对的方式去维护内存表我们用Memcached的目的,就是减少对数据... ASP.net中,直接可以使用类似 Cache["key1"] 的方式读写内存,而Memcached也是键值对的方式去维护内存表
我们用Memcached的目的,就是减少对数据库的直接读取,提高系统的响应速度。那么在只有一台服务器的情况下,既然已经可以通过HttpRuntime.Cache直接操作内存,那么是否没必要使用Memcached呢?
环境:服务器只有一台,IIS和数据库共用。
展开
 我来答
百度网友d242235
2016-05-12 · TA获得超过2385个赞
知道大有可为答主
回答量:1403
采纳率:84%
帮助的人:826万
展开全部
如果你的服务器只有一台,且数据库读写压力不大,就没必要使用Memcached。HttpRuntime.Cache是本地缓存,Memcached是分布式缓存,两者的区别在于:

本地缓存
本地缓存可能是大家用的最多的一种缓存方式了,不管是本地内存还是磁盘,其速度快,成本低,在有些场合非常有效。
但是对于web系统的集群负载均衡结构来说,本地缓存使用起来就比较受限制,因为当数据库数据发生变化时,你没有一个简单有效的方法去更新本地缓存;然而,你如果在不同的服务器之间去同步本地缓存信息,由于缓存的低时效性和高访问量的影响,其成本和性能恐怕都是难以接受的。

分布式缓存
前面提到过,本地缓存的使用很容易让你的应用服务器带上“状态”,这种情况下,数据同步的开销09会比较大;尤其是在集群环境中更是如此!
分布式缓存这种东西存在的目的就是为了提供比RDB更高的TPS和扩展性,同时有帮你承担了数据同步的痛苦;优秀的分布式缓存系统有大家所熟知的Memcached、Redis(当然也许你把它看成是NoSQL,但是我个人更愿意把分布式缓存也看成是NoSQL),还有淘宝自主开发的Tair等。
对比关系型数据库和缓存存储,其在读和写性能上的差距可谓天壤之别;就拿淘宝的Tair来说,mdb引擎的单机QPS已在10w以上,ldb的也达到了5w~7w,而集群的性能会更高(目前uic所用的Tair集群QPS高达数十万!)。
所以,在技术和业务都可以接受的情况下,我们可以尽量把读写压力从数据库转移到缓存上,以保护看似强大,其实却很脆弱的关系型数据库。
追问
我想我大概明白了,asp.net cache和memcached的区别可简单理解为local cache和分布式cache的区别,local cache只能利用到当前服务器的内存,而memcached自身的分布式管理机制可以将多台服务器的内存读写进行统一管理,而我们不需要去关心它的分布式如何实现。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式