memcache/php 的最佳实践 - 多 memcache 节点
所以我正在开发一个网络应用程序 - 必须为可扩展性而构建。它将频繁的 MySQL 查询存储到缓存中。我几乎已经构建了所有内容并准备就绪 - 但我担心处理缓存数据的位置的最佳实践。我与几个人交谈过,其中一个人建议将每个键/值拆分到所有内存缓存节点上。
这意味着如果我存储示例:“somekey”,“this is the value”,
它将被分割到 3 个内存缓存服务器上。
这是更好的方法吗?或者memcache更多地建立在一对一的关系之上?例如。
将值存储在服务器 A 上,直到出现故障 - 转到服务器 B 并存储在那里。
这是我目前对我所做的研究和过去使用内存缓存的经验的理解。
有人可以指出我在这方面的正确方向,并让我知道哪种方式是最好的,或者我是否完全混淆了。
谢谢
So I am working on a web app - that has to be built for scalability. It stores frequent MySQL querys into the cache. I have pretty much everything built and ready to go - but I am concerned on best practices on handling where to cache the data. I've talked to a few people and one of them suggested to split each key/value across all the memcache nodes.
Meaning if i store the example: 'somekey','this is the value'
it will be split across lets say 3 memcache servers.
Is that a better way? or is memcache more built on a 1 to 1 relationship?. For example.
store value on server A till it faults out - go to server B and store there.
that is my current understanding from the research I have done and past experience working with memcache.
Could someone please point me in the right direction in this and let me know which way is best or if I completely have this mixxed up.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我会在 php 中使用一致性哈希
请参阅 http://php.net/manual/en/memcached .constants.php
这样,如果 memcache 服务器出现故障,您的密钥将不会被重新分配:)
根据我的经验,memcache 服务器非常可靠,并且通常会由于操作系统升级等原因重新启动。
如果您不使用一致性哈希,那么如果服务器退出并返回,那么您可能会在该服务器上缓存旧的数据。
IE Memcache 服务器 A、B
get_key(1234) 返回“abc”,因为 A 现在可用。!
-丹尼尔
I would use consistent hashing in php
See http://php.net/manual/en/memcached.constants.php
This way if a memcache server goes down, your keys won't be redistributed :)
In my experience memcache servers have been REALLY reliable, and are usually restarted due to OS upgrades and such.
If you don't use consistant hashing, then if a server goes out and comes back, then you may have an old piece of data cached on that server.
IE Memcache servers A, B
get_key(1234) returns 'abc', because A is now available.!
-daniel