Клиентская библиотека Memcached недавно была выпущена как стабильная. Он используется digg (был разработан для digg Андреем Змиевским, теперь уже не с digg) и реализует гораздо больше протокола memcached, чем старый клиент memcache. Наиболее важные функции, которые имеет memcached:
- Cas токены . Это сделало мою жизнь намного проще и представляет собой простую систему предотвращения устаревших данных. Всякий раз, когда вы извлекаете что-то из кэша, вы можете получить с ним токен cas (двойное число). Вы можете использовать этот токен для сохранения обновленного объекта. Если никто не обновил значение во время работы вашего потока, обмен удастся. В противном случае был создан новый токен cas, и вам придется перезагрузить данные и снова сохранить их с новым токеном.
- Прочитанные обратные вызовы - лучшая вещь, так как нарезанный хлеб. Это упростило большую часть моего кода.
- getDelayed () - хорошая функция, которая может сократить время, в течение которого ваш сценарий должен ожидать результатов, возвращаемых с сервера.
- Хотя сервер memcached должен быть очень стабильным, он не самый быстрый. Вы можете использовать бинарный протокол вместо ASCII с более новым клиентом.
- Всякий раз, когда вы сохраняете сложные данные в memcached, клиент всегда выполнял сериализацию значения (что медленно), но теперь с memcached клиентом у вас есть возможность использовать igbinary . До сих пор у меня не было возможности проверить, насколько это может повысить производительность.
Мне было достаточно всего этого, чтобы перейти к новому клиенту и сказать, что он работает как шарм. Существует такая внешняя зависимость от библиотеки libmemcached , но, тем не менее, ее удалось установить на Ubuntu и Mac OSX, так что проблем пока нет.
Если вы решите выполнить обновление до более новой библиотеки, я предлагаю вам обновить ее до последней версии сервера, а также у нее есть некоторые приятные функции. Вам нужно будет установить libevent для его компиляции, но в Ubuntu особых проблем не возникало .
До сих пор я не видел, чтобы какие-либо фреймворки брали новый клиент memcached (хотя я их не отслеживаю), но я предполагаю, что Zend скоро появится на борту.
ОБНОВИТЬ
Zend Framework 2 имеет адаптер для Memcached, который можно найти здесь