1

获得有关如何测量 memcached 对象的实际/实际大小以防止它们变得太大的帮助之后,我考虑了下一步 - 实现一个分片/拆分功能,该功能在存储时透明地将大对象拆分为更小的部分并粘合它们在请求它们时将它们一起作为一个大对象。基本上它应该自动在幕后完成所有需要做的事情来让 memcached 满意。

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

我在我的 web 应用程序中使用 PHP,但对于这种情况,我会很高兴使用一些伪代码的通用方法来为我指明正确的方向。

非常感谢!

4

1 回答 1

2

在另一个问题中,serialize用于测量对象的存储长度。如果您达到对象大小的默认 1 meg 限制,并且您需要拆分内容,您可以简单地使用serialize将结果字符串拆分为适当的块,然后存储块。稍后您可以join将它们重新组合在一起并unserialize得到结果。

话虽这么说……说真的,如果您的序列化对象的大小是一兆,您可能需要重新考虑如何存储东西。PHP 的序列化可能有点慢(例如,与 相比json_encode),并且向它抛出一个兆或更多的数据可能不是最好或最快的方式来做你正在做的任何事情。

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

于 2010-06-18T20:28:22.743 回答