memcached底层工作原理

memcached底层工作原理

ID:14751588

大小:43.00 KB

页数:5页

时间:2018-07-30

memcached底层工作原理_第1页
memcached底层工作原理_第2页
memcached底层工作原理_第3页
memcached底层工作原理_第4页
memcached底层工作原理_第5页
资源描述:

《memcached底层工作原理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、memcached底层工作原理  1、memcached是怎么工作的?Memcached的神奇来自两阶段哈希(two-stagehash)。Memcached就像一个巨大的、存储了很多对的哈希表。通过key,可以存储或查询任意的数据。客户端可以把数据存储在多台memcached上。当查询数据时,客户端首先参考节点列表计算出key的哈希值(阶段一哈希),进而选中一个节点;客户端将请求发送给选中的节点,然后memcached节点通过一个内部的哈希算法(阶段二哈希),查找真正的数据(item)。举个列子,假设有3个客户端1,2,3,3台memcachedA,B,

2、C:Client1想把数据”barbaz”以key“foo”存储。Client1首先参考节点列表(A,B,C),计算key“foo”的哈希值,假设memcachedB被选中。接着,Client1直接connect到memcachedB,通过key“foo”把数据”barbaz”存储进去。Client2使用与Client1相同的客户端库(意味着阶段一的哈希算法相同),也拥有同样的memcached列表(A,B,C)。于是,经过相同的哈希计算(阶段一),Client2计算出key“foo”在memcachedB上,然后它直接请求memcachedB,得到数据”barbaz”。各种客

3、户端在memcached中数据的存储形式是不同的(perlStorable,phpserialize,javahibernate,JSON等)。一些客户端实现的哈希算法也不一样。但是,memcached服务器端的行为总是一致的。最后,从实现的角度看,memcached是一个非阻塞的、基于事件的服务器程序。这种架构可以很好地解决C10Kproblem,并具有极佳的可扩展性。可以参考AStoryofCaching,这篇文章简单解释了客户端与memcached是如何交互的。2、memcached最大的优势是什么?请仔细阅读上面的问题(即memcached是如何工作的)。Memcach

4、ed最大的好处就是它带来了极佳的水平可扩展性,特别是在一个巨大的系统中。由于客户端自己做了一次哈希,那么我们很容易增加大量memcached到集群中。memcached之间没有相互通信,因此不会增加memcached的负载;没有多播协议,不会网络通信量爆炸(implode)。memcached的集群很好用。内存不够了?增加几台memcached吧;CPU不够用了?再增加几台吧;有多余的内存?在增加几台吧,不要浪费了。基于memcached的基本原则,可以相当轻松地构建出不同类型的缓存架构。除了这篇FAQ,在其他地方很容易找到详细资料的。看看下面的几个问题吧,它们在memcach

5、ed、服务器的localcache和MySQL的querycache之间做了比较。这几个问题会让您有更全面的认识。3、memcached和MySQL的querycache相比,有什么优缺点?把memcached引入应用中,还是需要不少工作量的。MySQL有个使用方便的querycache,可以自动地缓存SQL查询的结果,被缓存的SQL查询可以被反复地快速执行。Memcached与之相比,怎么样呢?MySQL的querycache是集中式的,连接到该querycache的MySQL服务器都会受益。*当您修改表时,MySQL的querycache会立刻被刷新(flush)。存储一个

6、memcacheditem只需要很少的时间,但是当写操作很频繁时,MySQL的querycache会经常让所有缓存数据都失效。*在多核CPU上,MySQL的querycache会遇到扩展问题(scalabilityissues)。在多核CPU上,querycache会增加一个全局锁(globallock),由于需要刷新更多的缓存数据,速度会变得更慢。*在MySQL的querycache中,我们是不能存储任意的数据的(只能是SQL查询结果)。而利用memcached,我们可以搭建出各种高效的缓存。比如,可以执行多个独立的查询,构建出一个用户对象(userobject),然后将用户

7、对象缓存到memcached中。而querycache是SQL语句级别的,不可能做到这一点。在小的网站中,querycache会有所帮助,但随着网站规模的增加,querycache的弊将大于利。*querycache能够利用的内存容量受到MySQL服务器空闲内存空间的限制。给数据库服务器增加更多的内存来缓存数据,固然是很好的。但是,有了memcached,只要您有空闲的内存,都可以用来增加memcached集群的规模,然后您就可以缓存更多的数据。4、memcached和服务器的localca

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。