我无法回答几个关于memcached的问题,而且我在网上搜索了很多。
由于
答案 0 :(得分:2)
- PHP的memcached模块使用的哈希算法是什么?
醇>
根据您的需要,有不同的。有关选项,请参阅此页面:http://php.net/manual/en/memcached.constants.php您可以对池中的实例计数(DISTRIBUTION_MODULA
)或一致的哈希密钥分发算法(DISTRIBUTION_CONSISTENT
)使用标准模运算。如果需要,项目键本身也有散列算法选项(HASH_
)。
如果您要经常将实例放入和放出池中,您应该查看一致的散列方法。我从来没有真正使用它,可能应该减少服务器故障的影响,并且没有通过这条路线可以达到可衡量的性能......事后看来似乎没什么好事。认为memcached扩展应该可以将默认值更改为。我已经看到,通过一致性散列,您可以预期丢失10-25%的密钥(或者更少,池中有更多服务器),使用默认方法可能会更接近100%的损失。
更具体地说,一致性算法基于libketama。自述文件很好地总结了它的原因以及它是如何工作的。
- 它的设置是什么(即,它在环上添加服务器的次数是多少次?)
醇>
我不确定我明白你在这里问的是什么。每个新服务器的连续体中添加了多少个“滴答”?认为我们需要更多关注ketama lib - 猜测它试图在性能和更少的关键失误之间取得平衡。
- 哈希数组(连续环)是在某处缓存的,还是在每次执行脚本时重新计算?如果是后者,会导致性能问题/浪费计算能力吗?
醇>
诚实地说不是100%肯定。虽然它可能是一个浪费的计算,仍然似乎微不足道 - md5算法和一些算术。我只能说Memcached非常快。如果您需要高可用性,持久性分布式存储,您可能会看到像couchDB这样的其他内容。 Memcached非常擅长它的作用......在内存键/值存储中为“小”值。
您可能会喜欢这些文章: