首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP memcached模块中一致散列是如何工作的?

在PHP memcached模块中一致散列是如何工作的?
EN

Stack Overflow用户
提问于 2015-07-30 18:00:54
回答 1查看 592关注 0票数 1

我还没能回答一些关于memcached的问题,我在网上搜索了很多。

  1. PHP memcached模块使用的一致哈希算法是什么?
  2. 它的设置是什么(也就是说,它在环上添加了多少次服务器?)
  3. 一致性哈希数组(连续环型)是缓存在某个地方,还是在每次执行脚本时重新计算?如果是后者,这会不会导致性能问题/计算能力的浪费?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-07-30 18:51:46

  1. PHP的memcached模块使用的哈希算法是什么?

根据你的需要,有不同的选择。请参阅此页面中的选项:http://php.net/manual/en/memcached.constants.php --您可以在池中的实例计数(DISTRIBUTION_MODULA)上使用标准的模块化操作,或者使用一致的散列密钥分发算法(DISTRIBUTION_CONSISTENT)。如果需要的话,项目键本身的哈希算法也有选项(HASH_)。

如果要频繁地从池中删除实例,则应该查看一致的散列方法。我从来没有实际使用过它,而且可能应该这样做,因为它可以减轻服务器故障的影响,没有任何可衡量的性能影响。事后看来似乎没什么大不了的。考虑到memcached扩展应该更改为默认的扩展。我已经读过,使用一致的散列,您可以期望丢失10-25%的密钥(或者在池中有更多的服务器),如果采用默认的方法,则可能会接近100%的损失。

具体来说,一致性算法是基于利勃卡马的。readme很好地总结了它产生的原因以及它是如何工作的。

  1. 它的设置是什么(也就是说,它在环上添加了多少次服务器?)

我不太明白你在问什么。在每台新服务器中添加了多少个“滴答”?认为我们需要更多地关注ketama库--猜测它试图在性能和关键失误之间取得平衡。

  1. 散列数组(连续环)是缓存在某个地方,还是在每次执行脚本时重新计算?如果是后者,这会不会导致性能问题/计算能力的浪费?

不是百分之百确定诚实。虽然这可能是浪费计算,但仍然显得微不足道-- md5算法和一些算法。我能说的是Memcached非常快。如果您需要高可用性、持久的分布式存储,您可能会看到类似于couchDB的其他东西。Memcached很擅长做什么..。在内存键/值存储“小”值。

你可能会喜欢这些文章:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31730912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档