- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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置为失效状态。
您可能关注的文档
最近下载
- 课题开题报告:从协同到共生:新质生产力视角下产教融合共同体建设路径研究.docx VIP
- 《上呼吸道感染》课件.pptx VIP
- 护士长专项题集500题题库(500道).docx
- 品管圈活动降低手术患者术中低体温发生率.doc VIP
- 课题申报书:教育、科技、人才一体推进视角下的产教融合制度嵌入与协同治理路径研究.docx VIP
- 课题申报书:新质生产力视角下的地方高校产教融合共同体实现路径研究.docx VIP
- 钢结构技术新技术介绍.docx VIP
- LNG加气站生产安全事故综合应急预案(130页).doc
- 乳腺癌手术术后患者淋巴水肿管理路径、评估表、手法.docx
- 私募基金募集账户防火墙制度.docx VIP
文档评论(0)