Недокументированный Memcached-2
У модуля Мемкешед для ПХП удивительно плохо с документацией, я иногда заглядываю в его исходники, с целью почитать. Недавно наткнулся на очередную опцию, описания которой в документации нет (причём в документации аналогичного модуля для Пайтона она есть).
Оказываются UDP не единственный способ ускорить работу с Мемкешед, если вам скорость важнее результата операции. Способ хорош тем, что используется протокол TCP (т. е. с гарантированной доставкой), но мы не ждём — нам главное, что кеш-сервер переданное получил, а получилось ли записать — дело десятое.
Посмотрите на пример и обратите внимание на опцию OPT_NOREPLY.
$m = new Memcached;
$m->addServer(0, 11211);
$val = str_repeat(file_get_contents('/etc/passwd'), 200);
$m->set('key', $val);
$m->setOption(Memcached::OPT_NOREPLY, true);
$m->setOption(Memcached::OPT_COMPRESSION, false);
$time = microtime(true);
$m->append('key', $val);
echo number_format(microtime(true) - $time, 4, ',', ''), "\n";
Кстати, такое большое (как в примере) значение мне потом обратно прочитать не удалось, видимо превысил какие-то лимиты, так что оно здесь просто для иллюстрации и чтобы разница в задержке была очевидней. Без ключа операция append у меня заняла 0,0407 секунд, с ним — 0,0013.
Интересно, что можно делать несколько операций append подряд, очерёдность их сохраняется, корректность прочитанного — тоже. Вот только непонятно не может ли чтение получить данные между двумя append, скорее всего — может, но этот способ как раз для случаев, когда на первом месте скорость записи к кеш.
«превысил какие-то лимиты»
А в Сети разве нельзя найти более подробное описание/документацию, если в hard copy инструкции ничего не сказано об ограничениях?
Влад Никольский
Новороссийск
Комментарий для cczy.livejournal.com:
Сказано, наверное, только мне это не нужно. Запись объёмом в мегабайт хранить в кеше — сомнительная идея, на мой взгляд.
Комментарий для cczy.livejournal.com:
Под «кешем» я тут Мемкешед имею ввиду.
Ага, понял. Спасибо за ответ.
Честно говоря, я не особый специалист, а просто интересующийся. Учусь на том, что нахожу в Сети.
Прошу прощенья, получается новый коммент. Не нашёл ссылку как ответить на ваш коммент.
Влад Никольский
Новороссийск
Комментарий для http://cczy.livejournal.com/:
Это и есть способ ответить на коммент.