我有嵌套的PHP对象,我想在memcache中保存。我可以使用json_encode(),json_decode()来存储/检索来自memcache的数据吗?
问题隐含的是json_encode()函数是否“足够聪明”以反省我的对象而不必明确定义结构。
如果json_encode()不是可行的方法,我如何将我的嵌套对象存储在memcache中?
答案 0 :(得分:4)
使用serialize / unserialize。
这适用于“嵌套对象”。还有两种称为__wakeup()
和__sleep()
的魔术方法,只要序列化/反序列化一个对象,就会调用它们。在这里,您可以执行其他操作,例如:关闭/重新打开文件/ db-handles等。这是json无法获得的。
Json也可以工作,但是使用PHP序列化方法会更好更快,因为它们是为此目的而构建的。
答案 1 :(得分:2)
仅供参考,当使用memcached服务器运行时,memcache客户端会动态序列化/反序列化,因此不需要额外的序列化/反序列化。有一些开销伴随着序列化(如果内存大小有问题),所以你可以转到支持igbinary的新的memcached客户端(注意客户端名称末尾的附加d)。