Memcached::setMulti()
(PECL memcached >= 0.1.0)
存储多个元素
说明
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($items, time() + 300); ?>
参见
- Memcached::setMultiByKey() Store multiple items on a specific server
- Memcached::set() 存储一个元素
This is what the previous comment (fake set multi): https://github.com/php-memcached-dev/php-memcached/blob/master/php_memcached.c#L1219
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?
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.