Пользователи на сайте: Memcached vs MySQL-JOIN

Здравствуйте, дорогие друзья, с вами снова Блог ГО.

Сегодня, в День Знаний, разберём одну тему. Тема, не так, чтобы для старших классов, но уже и не для дошкольников.

Рассмотрим один из вариантов хранения данных о пользователях в мемкэше.

Постановка задачи

Есть, допустим, сайт, а на нём есть зарегистрированные пользователи. Их данные хранятся, обычно, в таблице наподобие следующей:

CREATE TABLE `users` (
	`user_id`  INT UNSIGNED NOT NULL AUTO_INCREMENT,
	`username` VARCHAR(20)  NOT NULL,              -- Имя
	`surname`  VARCHAR(20)  NOT NULL,              -- Фамилия
	`nickname` VARCHAR(50)  NULL DEFAULT NULL,     -- Ник
	`avatar`   BOOL         NOT NULL DEFAULT "0",  -- Наличие аватара
	`status`   ENUM("active", "banned", "deleted") DEFAULT "active", -- Активный, забаненый, удалённый
	-- ...
	PRIMARY KEY (`user_id`)
	-- ...
);

Остальной текст под катом

Честь php_memcached восстановлена

На днях на highload.com.ua появилась статья сравнивающая два php-расширения для работы с Memcached. Старое php_memcache и относительно новое php_memcached.

Среди прочего был приведен тест производительности, который внёс сумятицу в стройные ряды поклонников нового расширения. По нему получалось, что php_memcached умудрился стать втрое медленнее php_memcache.

Остальной текст под катом

Всякое

Google Gears: плагин расширяющий браузер до вообще не браузера. SQLite, многопоточный JavaScript, кросс-доменное общение, локальные файлы, хранилища и куча всего-всего. Из минусов: пользователь должен сей чудесный плагин установить и на каждый пук давать разрешение. Сам не пробовал — попробую отпишусь.

Не отстаёт от Гугла и Яндекс. Яндекс-Гирза пока нет, но зато есть эстонский яндекс с рассово верными тормозами.

Блог Дмитрия Сошникова на javascript.ru: несколько тягомотная теория по ECMA-262. Тем кто хочет начать изучать JavaScript глубже jQuery, рекомендую.

Как заставить AJAX индексироваться: команде гугла всё не спится и она спешит представить нам новый подход который позволит индексировать сайты, сделанные с помощью AJAX.

Memcached. Как найти ключи по паттерну: грязные хаки, позволяющие делать из PHP с memcached, то что по идее делать не нужно, но часто очень хочется. В частности получить список хранимых ключей. Забавно.

HTML5: кэширование приложений для работы в оффлайне: HTML5 делает те же фишки, что и Google Gears. Преимущество HTML5 в том, что это стандарт. Преимущество GG в том, что он работает.

На пидистале: PHP уделал ЦПП и вышел на 3-е место по популярности. Особенно жжот Objective-C, так же, как оказывается, Pascal ещё живой и вообще не плохо себя чувствует.

Так же по слухам окончательный пиздец пришел к nVidia. По другим слухам пока не пришёл.

Популярность Кинсбург.ру уже достигает трёхсот человек в день. Видимо, пора прикупить там рекламы, чего и всем советую.

Эмулятор php_memcached на PHP

Как неоднократно здесь писалось, новое расширение php_memcached лучше старого php_memcache практически всем, за исключением одного — нет Windows-версии. Что сильно напрягает при разработке и отладке.

Так как не было желания ставить себе Visual C и разбираться, как компилировать это расширение, я написал обёртку на PHP.

Просмотреть исходный код можно здесь (43 K), а скачать в архиве здесь (8 K)

В эмуляторе полностью воспроизведён интерфейс Memcached-класса, а работа по возможности приближена к работе реального расширения.

Так же в комментариях исходника переведена документация к методам, константам опций и результатов и даны свои комментарии. Так что код можно использовать просто вместо русскоязычной документации.

Эмулятор, конечно, далёк по оптимальности до настоящего расширения и при большом количестве параллельных запросов в некоторых местах может работать некорректно. Однако, для единоличной разработки под Windows вполне подходит.

Работает эмулятор через старое расширение php_memcache, поэтому оно должно быть установлено.

Остальной текст под катом

Преобразование типов в memcached

Мемкэш жжот просто нипадецки. Протестируем один сценарий для трёх расширений PHP:

  1. Старенький php_memcache.dll на моей локалке под Windows
  2. Тот же php_memcache только под FreeBSD
  3. Новое расширение php_memcached

Остальной текст под катом

Memcache vs Memcached

Под шумок, в начале года, вышло новое расширение для работы с memcached из php. Было php_memcache, стало php_memcached.

Как пишет Андрей Змиевский новая версия использует библиотеку libmemcached, и, если в предыдущем расширении взаимодействие с мемкэшем велось через жопу, то теперь всё будет неимоверно круто.

Среди новых примочек, наиболее полезная — получение нескольких ключей одним запросом.

К сожалению, пока нет готовой dll для Windows. В русскоязычном интернете про новое расширение вообще ничего не видно, и даже google заявляет возможно, вы имели в виду: php_memcache.