memcache可以在PHP中存储数据结构,比如splqueue吗?
我正在尝试将splqueue存储到memcache(而不是memcached)。以下示例代码是用于此目的的简单测试memcache可以在PHP中存储数据结构,比如splqueue吗?,php,memcached,queue,Php,Memcached,Queue,我正在尝试将splqueue存储到memcache(而不是memcached)。以下示例代码是用于此目的的简单测试 $mc = new Memcache(); $mc->addServer("127.0.0.1", 11300); $mc->addServer("127.0.0.1", 11301); $mc->addServer("127.0.0.1", 11302); $q = new SplQueue(); $q->enqueue(10); $q->enqu
$mc = new Memcache();
$mc->addServer("127.0.0.1", 11300);
$mc->addServer("127.0.0.1", 11301);
$mc->addServer("127.0.0.1", 11302);
$q = new SplQueue();
$q->enqueue(10);
$q->enqueue(20);
$q->count(); // line a
$mc->set("spl_queue", $q);
$p = $mc->get("spl_queue");
$p->count(); // line b
当我运行这段代码时,我在a行得到2,在b行得到0。所以这可能意味着在memcache中存储数据结构不起作用
所以我有以下三个问题
Memcache::set()
将序列化非标量值SplQueue
似乎没有实现SPLSerializable
接口,因此无法依靠它正确地序列化/取消序列化。您可以扩展SplQueue
,实现Serializable
,然后为此构建一些适当的序列化/非序列化策略
$mc = new Memcache();
$mc->addServer("127.0.0.1", 11300);
$mc->addServer("127.0.0.1", 11301);
$mc->addServer("127.0.0.1", 11302);
$q = new SplQueue();
$q->enqueue(10);
$q->enqueue(20);
$q->count(); // line a
$mc->set("spl_queue", $q);
$p = $mc->get("spl_queue");
$p->count(); // line b
SplObjectStorage
确实实现了Serializable
,因此我希望它能够正确地进出Memcache
对于其他SPL结构,您应该检查Serializable
的实现
希望这有帮助。是的。谢谢你指出。我已经更新了我的代码