Memcached块限制

为什么在 memcached 中存在硬编码的块限制(压缩后为.5 meg)?有没有人重新编译过他们?我知道我不应该像这样发大块,但这些额外的大块不时发生在我身上,并造成严重破坏。

0

1 答案

This question used to be in the official FAQ

memcached有什么限制我可能会打? (Wayback Machine)

去引用:

您可能会看到的有关memcache的简单限制是关键   商品尺寸限制。密钥限制为250个字符。存储的数据   不能超过1兆字节,因为这是最大的典型值   平板大小“。

常见问题解答现在已被修改,现在有两个单独的问题涉及这个问题:

最大密钥长度是多少? (250字节)

密钥的最大大小为250个字符。注意这个值会是   如果你使用客户端“前缀”或类似的功能,那么更少   前缀固定在原始键的前面。更短的键是   通常会更好,因为它们可以节省内存并使用更少的带宽。

为什么项目大小限制为1 MB?

呃,这是一个受欢迎的问题!     简短回答:因为内存分配器的算法是如何工作的。     长回答:Memcached的内存存储引擎(将会是   可插拔/将来调整......),使用平板方法记忆   管理。内存被分解成不同大小的块状块,   从一个最小数开始,然后由一个阶乘上升到   尽可能最大的价值。     假设最小值是400字节,最大值是1   兆字节,因子是1.20:     

板1 - 400字节板2 - 480字节板3 - 576字节...等。

     板块越大,与板块之间的间隙就越大   以前的板。所以最大值越大效率越低   内存存储是。 Memcached还必须预先分配一些内存   每个存在的板块,因此设置一个更大的更小的因子   最大值将需要更多开销。     

你为什么不想这么做还有其他原因...如果我们是   谈论一个网页,你试图存储/加载值   那么大,你可能做错了什么。在这个尺寸它会   需要花费大量的时间来加载和解压缩数据结构   到内存中,您的网站可能不会很好。

     

如果您确实想要存储大于1MB的项目,则可以   用已编辑的 slabs.c:POWER_BLOCK 值重新编译memcached,或者使用   效率低下的malloc / free后端。其他建议包括a   数据库,MogileFS等。

0
额外