网站大量收购独家精品文档,联系QQ:2885784924

memcached经典问答.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
memcached经典问答

Memcached是怎么工作的? Memcached的神奇来自两阶段哈希(two-stage hash)。Memcached就像一个巨大的、存储了很多对的哈希表。通过key,可以存储或查询任意的数据。 客户端可以把数据存储在多台Memcached上。当查询数据时,客户端首先参考节点列表计算出key的哈希值(阶段一哈希),进而选中一个节点;客户端将请求发送给选中的节点,然后Memcached节点通过一个内部的哈希算法(阶段二哈希),查找真正的数据(item)。 举个列子,假设有3个客户端1, 2, 3,3台Memcached A, B, C: Client 1想把数据”barbaz”以key “foo”存储。Client 1首先参考节点列表(A, B, C),计算key “foo”的哈希值,假设Memcached B被选中。接着,Client 1直接connect到Memcached B,通过key “foo”把数据”barbaz”存储进去。Client 2使用与Client 1相同的客户端库(意味着阶段一的哈希算法相同),也拥有同样的Memcached列表(A, B, C)。 于是,经过相同的哈希计算(阶段一),Client 2计算出key “foo”在Memcached B上,然后它直接请求Memcached B,得到数据”barbaz”。 各种客户端在Memcached中数据的存储形式是不同的。一些客户端实现的哈希算法也不一样。但是,Memcached服务器端的行为总是一致的。 Memcached最大的优势是什么? Memcached最大的好处就是它带来了极佳的水平可扩展性,特别是在一个巨大的系统中。由于客户端自己做了一次哈希,那么我们很容易增加大量Memcached到集群中。Memcached之间没有相互通信,因此不会增加 Memcached的负载;没有多播协议,不会网络通信量爆炸(implode)。Memcached的集群很好用。内存不够了?增加几台 Memcached吧;CPU不够用了?再增加几台吧;有多余的内存?在增加几台吧,不要浪费了。 Memcached的cache机制是怎样的? Memcached主要的cache机制是LRU(最近最少用)算法+超时失效。当您存数据到Memcached中,可以指定该数据在缓存中可以呆多久Which is forever, or some time in the future。如果Memcached的内存不够用了,过期的slabs会优先被替换,接着就轮到最近使用最少的slabs。 为什么单个item的大小被限制在1M byte之内? 简单的回答:因为内存分配器的算法就是这样的。 详 细的回答:Memcached的内存存储引擎(引擎将来可插拔…),使用slabs来管理内存。内存被分成大小不等的slabs chunks(先分成大小相等的slabs,然后每个slab被分成大小相等chunks,不同slab的chunk大小是不相等的)。chunk的大小依次从一个最小数开始,按某个因子增长,直到达到最大的可能值。 如果最小值为400B,最大值是1MB,因子是1.20,各个slab的chunk的大小依次是:slab1 – 400B slab2 – 480B slab3 – 576B … slab中chunk越大,它和前面的slab之间的间隙就越大。因此,最大值越大,内存利用率越低。Memcached必须为每个slab预先分配内存,因此如果设置了较小的因子和较大的最大值,会需要更多的内存。 还有其他原因使得您不要这样向Memcached中存取很大的数据,把这样大的数据结构load和unpack到内存中需要花费很长的时间,从而导致您的网站性能反而不好。 Memcached能接受的key的最大长度是多少? 需要注意的是,250是Memcached服务器端内部的限制,如果您使用的客户端支持”key的前缀”或类似特性,那么 key(前缀+原始key)的最大长度是可以超过250个字符的。 Memcached对item的过期时间有什么限制? 过期时间最大可以达到30天。Memcached把传入的过期时间(时间段)解释成时间点后,一旦到了这个时间点,Memcached就把item置为失效状态。

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档