我想在PHP Memcached扩展上使用getDelayed
,但我认为它没有以正确的方式实现。
现在您要求输入一些密钥,然后使用fetch()
和fetchAll()
检索所有密钥。但想象一下我需要检索页面不同部分使用的15个密钥的场景,我事先并不知道,但我可以要求各个对象给我列表。我想要的是给Memcached实例这个列表(每个组件都会给出它的部分),然后当我需要它们从实例中检索时,但不是一次全部检索它们:每个组件都将采用它所需的那个。
基本上,如果我要实现这一点,我会禁止单独使用getDelayed
并实施bookGet($keys)
方法,您可以将密钥添加到book(实际上调用getDelayed
),然后重新定义get
处理这三种情况:
我想知道这是否有意义,您对该主题的想法以及是否有人已经实现了这个或者PECL Memcached已经以这种方式工作,实际上文档没有正确解释它。
答案 0 :(得分:0)
我认为将它添加到PECL是一个坏主意:get()函数应该直接从memcache中检索,这可能是自你执行的最后一次fetch()/ fetchAll()以来改变了数据。通过扩展用于特定目的的memcached类,可以轻松实现您的功能,这可能不是世界其他人想要的。只需在您的课程中添加一些“预订”和“已检索”密钥的私人商店。重新定义你的get()方法以表现你喜欢的行为(当然也许可以调用parent::get()
),你很高兴。
我做认为我应该能够多次调用getDelayed()并期望它添加额外的密钥来检索而不是覆盖它。 (因此$m->getDelayed(array('foo');
后跟$m->getDelayed(array('bar');
会导致这两个键的fetchAll()
,而不仅仅是最后一个'bar'。