处理键值存储中对象的拆分和连接?

时间:2010-06-18 20:05:13

标签: php memcached split sharding

关于如何测量memcached对象的物理/实际大小getting some help以防止它们变得太大,我已经考虑了下一步 - 实现一个分片/分割功能,将大对象透明地分成小块在存储时,将它们粘合在一起作为请求它们时的一个大对象。基本上它应该自动完成幕后的所有操作,以保持memcached的快乐。

处理数组,对象或任何类型对象的分割的适当方法是什么?

我在我的webapp中使用PHP,但对于这种情况,我会对使用一些伪代码的一般方法非常满意,以指出我正确的方向。

非常感谢!

1 个答案:

答案 0 :(得分:2)

在另一个问题中,serialize用于衡量对象的存储长度。如果您在对象大小上达到默认的1兆字节限制,并且需要拆分,则可以使用serializesplit the resulting string into appropriate chunks,然后存储块。稍后您可以join再次将它们重新组合在一起并unserialize结果。

有人说......严肃地说,如果你的对象是序列化的,是一个巨大的,你可能想重新考虑如何存储东西。 PHP的序列化可能有点慢(比如说,json_encode),并且在它上面抛出一兆或更多的数据可能不是最好或最快的方式来做你正在做的事情。

如果您正在实施memcached和分片作为一种性能机制,我建议您立即停止,除非您已经使用Xdebug之类的工具来分析您的代码并消除所有其他瓶颈。