Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 处理键值存储中对象的拆分和连接?_Php_Memcached_Split_Sharding - Fatal编程技术网

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

Php 处理键值存储中对象的拆分和连接?,php,memcached,split,sharding,Php,Memcached,Split,Sharding,在讨论了如何测量memcached对象的fysical/actual大小以防止它们变得太大之后,我考虑了下一步——实现一个切分/分割功能,该功能可以在存储时透明地将大对象分割成较小的片段,并在请求时将它们粘合在一起作为一个大对象。基本上,它应该在幕后自动完成所有需要做的事情,以保持memcached的快乐 处理数组、对象或任何类型对象的拆分的合适方法是什么 我在我的webapp中使用PHP,但是对于这种情况,我非常乐意使用一些psuedo代码来为我指明正确的方向 非常感谢 在另一个问题中,ser

在讨论了如何测量memcached对象的fysical/actual大小以防止它们变得太大之后,我考虑了下一步——实现一个切分/分割功能,该功能可以在存储时透明地将大对象分割成较小的片段,并在请求时将它们粘合在一起作为一个大对象。基本上,它应该在幕后自动完成所有需要做的事情,以保持memcached的快乐

处理数组、对象或任何类型对象的拆分的合适方法是什么

我在我的webapp中使用PHP,但是对于这种情况,我非常乐意使用一些psuedo代码来为我指明正确的方向


非常感谢

在另一个问题中,
serialize
用于测量对象的存储长度。如果您在对象大小上达到了默认的1兆限制,并且需要将对象拆分,那么只需使用
序列化
,然后存储块。稍后,您可以将它们重新连接在一起,然后对结果进行取消序列化

话虽如此。。。说真的,如果序列化对象的大小是一个meg,那么您可能需要重新考虑如何存储东西。PHP的序列化可能有点慢(比如说,与json_encode相比),向它抛出一个或多个meg数据可能不是做任何事情的最佳或最快的方式


如果您将memcached和sharding作为一种性能机制来实现,我敦促您立即停止,除非您已经使用了类似于评测代码的工具,并且已经消除了所有其他瓶颈。

天哪,如果您正在认真存储大小为meg的PHP序列化对象,我认为你有更多的问题,而不是必须把它们分割成memcached!不,它们的大小不会是1兆字节,但在极端情况下可能是50kb或100kb,因此如果我有两个或三个这样的密钥,我将需要顺利处理拆分和连接…我希望您理解1mb的限制是每个密钥,而不是总数。嗨,非常感谢您的帮助!不过不用担心尺寸。我确信我们不会接近1mb的生产限制,这要感谢我们早些时候通过测量尺寸随时间的增加而得到的帮助,从而能够采取应对措施。然而,通过使用您的方法,我们将能够保持存储到memcached的所有数据集整洁并具有适当的大小。