Skip to content

Memcached

Installation

shell
composer require thesis/memcached

Supported protocols

  • [x] text
  • [x] binary

Connection

php
<?php

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211?proto=text'); // connect via `text` protocol
$client = Memcached\connect('127.0.0.1:11211?proto=binary'); // connect via `binary` protocol

Without specifying a proto, text protocol will be used.

Commands

Set

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$client->set(new Memcached\Key('x'), new Memcached\Item('y', expiration: Memcached\Expiration::fromSeconds(10)));

Add

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$client->add(new Memcached\Key('x'), new Memcached\Item('y'));

Append

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$client->append(new Memcached\Key('x'), new Memcached\Item('y'));

Prepend

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$client->prepend(new Memcached\Key('x'), new Memcached\Item('y'));

Replace

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$client->replace(new Memcached\Key('x'), new Memcached\Item('y'));

Get

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$item = $client->get(new Memcached\Key('x'));

// Null means key doesn't exist.
if (null !== $item) {
    //
}

Gets

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');

$client->set(new Memcached\Key('x'), new Memcached\Item('y'));
$client->set(new Memcached\Key('a'), new Memcached\Item('b'));

foreach ($client->gets([new Memcached\Key('x'), new Memcached\Key('a')]) as $key => $item) {
    //
}

Delete

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$client->set(new Memcached\Key('x'), new Memcached\Item('y'));
$client->delete(new Memcached\Key('x'));

Touch

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$client->set(new Memcached\Key('x'), new Memcached\Item('y', expiration: Memcached\Expiration::fromSeconds(10)));
$client->touch(new Memcached\Key('x'), Memcached\Expiration::fromSeconds(20));

Incr

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$client->set(new Memcached\Key('x'), new Memcached\Item('1'));
$client->incr(new Memcached\Key('x'), 1);

Decr

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$client->set(new Memcached\Key('x'), new Memcached\Item('1'));
$client->decr(new Memcached\Key('x'), 1);

Cas

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');

$client->set(new Memcached\Key('x'), new Memcached\Item('y'));
$client->set(new Memcached\Key('a'), new Memcached\Item('b'));

foreach ($client->gets([new Memcached\Key('x'), new Memcached\Key('a')]) as $key => $item) {
    if ($key === 'x') {
        $client->cas(new Memcached\Key('x'), new Memcached\Item('z'));
    }
}

Flush

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$client->set(new Memcached\Key('x'), new Memcached\Item('y'));
$client->set(new Memcached\Key('a'), new Memcached\Item('b'));
$client->flush();

Verbosity

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
$client->verbosity(10);
$client->set(new Memcached\Key('x'), new Memcached\Item('y'));

Stats

php
<?php

declare(strict_types=1);

require_once __DIR__.'/../vendor/autoload.php';

use Thesis\Memcached;

$client = Memcached\connect('127.0.0.1:11211');
foreach ($client->stats() as $name => $stat) {
    echo $name . \PHP_EOL;
    echo $stat->value . \PHP_EOL;
}