PHP 8.3.0 RC 6 available for testing

Memcached::setMulti

(PECL memcached >= 0.1.0)

Memcached::setMulti存储多个元素

说明

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

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

参数

items

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

expiration

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

返回值

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

示例

示例 #1 Memcached::setMulti() 示例

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

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

参见

add a note

User Contributed Notes 3 notes

up
5
Nicolas
10 years ago
up
3
nulll
5 years ago
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?
up
2
jooonic at googlemail dot com
13 years ago
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.
To Top