Memcached::setMulti

(PECL memcached >= 0.1.0)

Memcached::setMulti存储多个元素

说明

public Memcached::setMulti ( array $items , int $expiration = ? ) : bool

Memcached::setMulti()类似于Memcached::set(), 但是使用了 参数items指定多个元素来替代单独的key/value设置以便于对多个元素的操作。expiration 参数指定的时候一次应用到所有的元素上。

参数

items

存放在服务器上的键/值对数组。

expiration

到期时间,默认为 0。 更多信息请参见到期时间

返回值

成功时返回 true, 或者在失败时返回 false。 如需要则使用 Memcached::getResultCode()

范例

Example #1 Memcached::setMulti() 示例

<?php
$m 
= new Memcached();
$m->addServer('localhost'11211);

$items = array(
    
'key1' => 'value1',
    
'key2' => 'value2',
    
'key3' => 'value3'
);
$m->setMulti($itemstime() + 300);
?>

参见

User Contributed Notes

nulll 02-Feb-2018 01:57
The previous comment is from April 2013, it has a link pointing on current master, so things are changed since 2013 in the source code.

Maybe the right link is
https://github.com/php-memcached-dev/php-memcached/blob/80cb21467a1db6b7b18725df586f11801c823695/php_memcached.c#L1219

By the way, can someone skilled in C confirm the "fake setMulti" problem?
Nicolas 03-Apr-2013 04:51
This is what the previous comment (fake set multi):

https://github.com/php-memcached-dev/php-memcached/blob/master/php_memcached.c#L1219
jooonic at googlemail dot com 25-Aug-2010 01:10
Dont expect setmulti is faster then multiple SETs!
It doesn't use the setmulti lib function, it iterats over every key and send him alone.
I can't find any php implementation with setmulti support (needs support for memcached's binary protocol, remember php's "memcache"-extension only supports text-protocol).
Thats bad, not enought throughput to membase.
So i have to use redis instead, coz of its support for get/set multi.