Memcached Wiki 一 关于

来源:互联网 发布:淘宝卖家发布宝贝品牌 编辑:程序博客网 时间:2024/05/16 15:32

1. Memcached是什么


1.1 Memcached

参考 关于Memcached

1.2 关于Memcached稍微多说几句

See the memcached.org about page for a brief overview.

1.2.1 我打开它而我的APP没有变快!!!

Memcache是一个开发者工具,不是一个"代码加速器",也不是数据库中间件。如果你正尝试建立一个你下载或购买的应用程序并使用Memcached,你最好的办法是回到它们的方式,并阅读你的应用的文档关于如何使用Memcached。很可能这些文档不能帮助你什么。

1.2.2 它由什么组成?

。客户端软件,被给定一个可用的memcached服器列表
。一个基于客户端的哈希算法,它基于输入的"key"来选择一台服务器
。服务端软件,存储keys和它们的alues到一个内部的哈希表
。服务端算法,决定何时抛弃旧的数据(如果超出内存容量),或重用内存

1.2.3 它的设计哲学是什么?

1) 简单的Key/Value存储
服务器节点不关心你的数据(格式)是什么,数据项由一个key,一个过期时间,可选标识,和原始数据组成。它不理解数据结构;你上传的数据必需是预先序列化的。某些命令(incr/decr)可能操作潜在的数据,但实现是很简单化的。

2) 聪明的半客户端,半服务端
一个"memcached实现"是部分实现为客户端,部分实现为服务端。客户端知道(负责)如何发送数据项到一个特定的服务器,当不能链接一台服务器时如何处理,以及如何从服务器端获取数据(keys)。

3) 服务器之间相互不连接
Memcached服务器相互间通常不知道对方,没有通讯,没有同步,没有广播。缺少内部连接意味着增加更多的服务器将如期望的增加更多容量。这条规则可能有例外,但它们是例外并被谨慎对待。

4) 一切都是O(1)
对一切它都能做到,memcached的命令是O(1)的。每条命令的每次处理大体上都花费相同的时间,并且任何地方不应有明显的变慢。这回到"简单的K/V存储"原则,因为你不会想要在缓存服务中处理数据,缓存可能会同时被几十成百上千的Web服务器访问。

5) 忘记数据是一项功能
Memcached默认情况下是一个最近最少使用(LRU)的缓存。它设计为在一个指定时间后会有数据项过期。这些对很多问题都是优雅的解决方案;一分钟后过期数据来限制陈旧的数据被返回,或冲刷(flush)掉未被使用的数据来保留被频繁请求的信息。


这更进一步极大地简化了memcached的工作。没有用于垃圾收集的"暂停"等待确保了低延迟,而且释放空间是惰性回收的。

6) 缓存失效(Invalidation)是一个难题
由于memcached的集中式集群(centralized-as-a-cluster)性质,使一个cache入口失效的任务是无意的。不是广播数据到所有可用主机,而是直接使数据的准确位置失效。你可能进一步复杂化你的需求,并且有附加说明,但你处在一个强的基准线上。

1.2.4 Memcached是如何发展的?

Memcached被发展为一个平台。其中的一些原因归咎于自然开发的缓慢,和众多的客户端。大多发生在人们探索K/V存储的可能性上。学习缓存SQL查询和渲染模板常使开发者们无瑕,但他们渴望更多。

1) 协议
Memcached不是协议的唯一实现。有些商业实体,其他OSS项目,等等。Memcached客户端相当普遍,而且有很多用于类memcached集群部署。我们将继续听到其他项目"说"memcached,这作为一种文化和软件本身回过头来影响了memcached.

2) 其他协议
业内在用很多不同方法来实验与网络服务的通信。Google protocol buffers, Facebok Thrift, Avro, 等。可能会有更好的方法,未来会向我们展示。

3) 持久化存储
很多用户想要在重启,或物理内存之外能持久的K/V存储。在很多情况下memcached对此不是一个很匹配的选择,需要昂贵的闪存来保持数据的访问性能。在大多常见的场景下,如果一台服务器不可用并且过后又载着旧数据回来,灾难会发生。用户看到旧的数据,功能被破坏,等。

然而,SSD的价格在下降,这看起来是一个可以扩展的领域。

4) 存储引擎
作为一个服务存储引擎通常来说对memcached是一个重要的未来。在我们可敬的分片算法之外,有其他内存后端可实验。tcmalloc, jemalloc, CPU-local slabs, 体系结构(hierarchies),等。存储引擎促进了改进速度和内存效率的实验,同样专用的服务也能谈及memcached协议。


2. 学习Memcached的一个奇遇


3. 通用词汇表


4. 工具和扩展链接 - 监控程序,工具,演示文档等。

(这里有很多有用的文章  [TODO])

http://code.google.com/p/memcached/wiki/NewLinks


本文内容大部分翻译自官网,错漏在所难免。本文用于分享及交流,引用或转载请注明博客及作者或博文地址。禁止用于未经授权的商业性用途。

0 0
原创粉丝点击