Я исследую возможности использования memcached, поскольку устройство хранения данных сессии для системы основывалось на CodeIgniter. Кто-либо сделал это прежде (это - вероятно, глупый вопрос :) и раз так кто Ваши люди опыта? Вы использовали какие-либо существующие библиотеки/расширения? До повышения производительности, что Вы видели? Какие-либо протесты?
Заставить PHP помещать сессии в Memcache напрямую, а не через код фреймворка, очень просто - достаточно изменить две строки в PHP.ini:
# see http://php.net/manual/en/memcache.ini.php
session.save_handler = memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
Здесь используется немного устаревшее (но все еще полностью поддерживаемое) расширение 'memcache' из PECL.
Вы можете выбрать CodeIgniter Multicache Library, которую можно найти здесь: http://www.haughin.com/code/multicache/
В коде вы можете просто использовать вот так:
$this->load->library('cache');
//To use memcache
$this->cache->useMemcache($iptomemcache, $port); /*if you want, you can check to see if the connection even worked, as this will return false if the connection failed.*/
$this->cache->save('testkey', 'testdata', NULL, 3600); /*caches the testdata string for 1 hour. */
echo $this->cache->get('testkey');
//To switch back to file based caching
$this->cache->useFile();
//etc.
Непрактично использовать Memcached для хранения реляционных данных (как MySQL); было бы неэффективно запрашивать каждый элемент из Memcached, а затем проверять, соответствует ли он запросу. Существуют лучшие решения для такой проблемы (рассмотрим, например, таблицы памяти в MySQL).
С другой стороны, если вы ищете простое хранилище ключей/значений, это, безусловно, практическое применение для Memcached. Однако я бы немного опасался писать для него драйвер для CodeIgniter. Интерфейс для Memcached в PHP и так очень прост:
$memcached->get('my key');
$memcached->set('my key', 'my value');
Я бы предложил просто использовать классы Memcached напрямую. Добавление всех этих дополнительных накладных расходов в CI кажется мне просто грязным и ненужным.
С другой стороны, я видел реализации Memcached, используемые для сессионного движка CodeIgniter. Это, конечно, очень веская причина для написания драйвера, и я бы настоятельно рекомендовал это сделать (сессии - это боль в шее для масштабирования).
Удачи