Skip to content
AntonShevchuk edited this page Oct 30, 2012 · 35 revisions

Описание

Требует PECL расширение memcached.

Данный класс лишь враппер для ленивой инициализации Memcached, ну и чтобы ничего не ломалось, даже если кеш пытаемся использовать без наличия серверов memcache

Настройка

Указываем наши memcache сервера (host, port, weight):

<?php
"cache" => array(
    "cache" => true, // enable/disable cache
    "servers" => array(
         array("my.server.com", 11211, 1),
    ),
),

Memcached имеет возможность повесить на него механизм сессии, для этого потребуется внести изменения в php.ini:

session.save_handler = memcached
session.save_path="server:port"

Не путайте два расширения - memcache и memcached, у них и настройки разные:

; Memcache
session.save_handler = memcache
session.save_path = "tcp://localhost:11211"
; MemcacheD
session.save_handler = memcached
session.save_path = "localhost:11211"

В системе используем memcached, так он живёт и здравствует, т.е. поддерживается и обновляется

Использование

Читаем документацию по Memcached, ну а так есть небольшой довесок в виде функции getData:

<?php
/**
 * Get data from cache
 * otherwise call callback function
 *
 * @param string   $key
 * @param \closure $callback
 * @param int      $ttl
 * @throws \Bluz\Exception
 * @return mixed
 */
$userRow = $cache->getData('UserID:'.$id, function() use ($id) {
     return Users\Table::getInstance()->findRow($id);
}, 30);

TODO TBD

В действительности необходим следующий интерфейс:

<?php
function get($key, $callback, $ttl, $tags);
function update($key, $value, $ttl);
function clearByKey($key);
function clearByTag($tag);
function clear();

Clone this wiki locally