首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Memcached缩放:键“分组”

Memcached缩放:键“分组”
EN

Stack Overflow用户
提问于 2011-08-13 01:17:56
回答 1查看 718关注 0票数 1

由于最好的做法是将经常在单个服务器上(使用multiGet)检索的相关密钥分组,以获得最佳性能,因此,对于为实现此目的而构建的客户机函数所使用的隐式机制,我有几个问题。

我已经看到了两种使用libmemcache (具体地说是php)为相同目的服务的不同方法。第一种也是最明显的方法是使用getByKey/setByKey将密钥映射到服务器,第二种方法是使用选项OPT_PREFIX_KEY (在memcached::_construct下的php文档中有一个简单的示例),该示例根据文档“用于为项目键创建‘域’”。第二种方法的警告是,它只能在每个实例的基础上设置,这可能是好事,也可能不是好事。

所以,除非我完全搞错了,而且这两种方法实际上并没有达到相同的目的,这是否明显有利于与另一种方法并行不悖?

在我讨论这个话题时,我的另一个问题是:在一贯的散列场景中,将密钥映射到服务器有什么意义?我假设如果一个节点失败了,那么可以简单地将freeform键映射到一个新服务器上,而不会出现任何问题。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-05-18 09:51:43

如果这些键几乎总是一起检索,那么您可能希望将它们缓存在一个单独的键/值对中,例如,通过对键进行排序和连接,并将序列化为JSON或类似格式的字典的值存储起来。

回到你的问题:

  • OPT_PREFIX_KEY几乎与按键分组值无关,它只是对这个特定客户端使用的所有键进行前缀,因此"1“成为"foo1”,并且通过使用这个新值进行一致散列来分发,而不需要"foo".
  • getByKey/setByKey进行任何分组,因为它可以将不同的键传递给libketama (用于选择服务器)和memcached服务器。如果指定相同的第一个键和不同的第二个键,它们将在同一个memcached服务器上结束,但不会相互覆盖。

过早优化是所有邪恶

的根源

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

https://stackoverflow.com/questions/7047906

复制
相关文章

相似问题

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