Memcached::getAllKeys

(PECL memcached >= 2.0.0)

Memcached::getAllKeysすべてのサーバーのキーを取得する

説明

public array Memcached::getAllKeys ( void )

Memcached::getAllKeys() は、 個々の memcache サーバーに問い合わせて、その時点で格納されているすべてのキーの配列を取得します。 これはアトミックな操作ではないので、ある時点でのすべてのキーのスナップショットを真の意味で取得したとは言えません。 また、memcache はすべてのキーを返すことを保証しないので、 すべてのキーを取得したものとみなすこともできません。

パラメータ

この関数にはパラメータはありません。

返り値

成功した場合は全サーバーに格納されているキー、失敗した場合に FALSE を返します。

add a note add a note

User Contributed Notes 4 notes

up
1
flaviu dot chelaru at gmail dot com
10 months ago
// initiate the memcached instance
$cache = new \Memcached();
$cache->addServer('localhost', '11211');

// get all stored memcached items

$keys = $cache->getAllKeys();
$cache->getDelayed($keys);

$store = $cache->fetchAll();

// delete by regex keys

$keys = $cache->getAllKeys();
$regex = 'product_.*';
foreach($keys as $item) {
    if(preg_match('/'.$regex.'/', $item)) {
        $cache->delete($item);
    }
}
up
3
xiangku7890 at gmail dot com
1 year ago
First I use the lastest memcached version 1.4.25, but unfortunately I found memcached::getAllkeys do not work with it, though i follow the others suggestion to disable Memcached::OPT_BINARY_PROTOCOL. So i try to use history versions, when i use memcached version 1.4.17, it works.
up
-3
fykknd at 163 dot com
1 year ago
I got this answer..
My libmemcached version is 1.0.18. php-memcached version is 2.2.0
In Libmemcached at memcache.h line 84:
#define MAX_NUMBER_OF_SLAB_CLASSES (63 + 1)
Modify it to 201, compile again. It's ok.
主要还是版本不兼容造成的。libmemchaed里的一个bug,
memcached_return_t这个方法里的for循环,最大数是200,和上面的常量64定义不一致造成的。
up
-8
Cuchac
2 years ago
This command returns always FALSE when binary protocol in use (Memcached::OPT_BINARY_PROTOCOL = true). Without binary protocol it works.
To Top