Ускоряем работу сайта при помощи кеширования на базе Memcached

Memcached — это хранилище «ключ => значение», использование которого очень эффективно для ускорения работы сайта или веб-приложения.

Memcached реализует кэширование данных в оперативной памяти на основе парадигмы хеш-таблицы, то есть там можно хранить данные «ключ => значение», а скорость чтения и записи будет очень высокой.

Для серверного кеширования Memcached подходит очень хорошо — кешировать можно как промежуточные данные (в сериализованном виде), так и данные, которые непосредственно «отдаются» пользователям — фрагменты страниц или даже страницы целиком. В случае кеширования страниц целиком, как правило, проще реализовать отдачу подобного рода статики на уровне веб-сервера, однако если нагрузка на дисковую подсистему высока, то стоит помнить, что Memcached может напрямую работать с веб-сервером (для nginx, например, есть соответствующий модуль), что позволяет на уровне бекенда писать данные в кеш, а получать этот кеш можно непосредственно веб-сервером без обращения к бекенду.

В API memcached есть только базовые функции — это выбор сервера, установка и разрыв соединений, добавление, удаление, обновление и получение значения по заданному ключу.

Memcached отлично работает в кластере. Распределение реализуется путем сегментирования данных по ключам (по аналогии с сокетами хеш-таблицы). Клиент, используя ключ данных, вычисляет его хеш и использует его для выбора соответствующего сервера. Ситуация сбоя сервера интерпретируется как промах кэша, что несколько снижает производительность, но никак не мешает дальнейшей работе с ПО (то есть критичных ошибок не вызывает).

Для работы с Memcached есть готовые библиотеки, написанные для работы с языками программирования C, C++, C#, Ruby, Perl, PHP, Python, Java и с другими. Некоторые CMS имеют в своём составе модули кеширования, которые могут работать с Memcached, если данный сервис запущен на сервере.

Memcached хранит данные в оперативной памяти и это позволяет очень быстро их записывать и получать.

Memcached — хранилище «ключ-значение», которое часто используют как сервис кэширования данных. 

Memcached хранит данные в оперативной памяти на основе хеш-таблицы, что позволяет очень быстро записывать и получать данные. Клиентские библиотеки есть для всех популярных языков программирования — C/C++, C#, Ruby, PHP, Python, Java и других.

Узнать больше →

Cтатьи по теме:

Ускоряем работу сайта: используем Redis для кеширования и хранения данных
Redis — сетевое журналируемое хранилище данных типа «ключ — значение», которое обрабатывает данные в оперативной памяти и обладает механизмами снимков и журналирования для обеспечения постоянного хранения. Хранилище поддерживает работу с пятью типами данных: со строками, списками, хешами, обычными и сортируемыми множествами.
Быстрый поиск на сайте, используя ElasticSearch или Sphinx
Sphinx и ElasticSearch — это поисковые «движки», которые обеспечивают более быстрый поиск и фильтрацию по сравнению с реляционными базами данных, а также обеспечивают возможность использования многих полезных функций поиска, например, учитывают морфологию языка, осуществляют фасеточный поиск, работают со стоп-словами, обеспечивают выборочную индексацию и позволяют производить настройку формулы определения релевантности документов.
MySQL — система управления базами данных
MySQL — это реляционная система управления базами данных с открытым исходным кодом. В настоящее время эта СУБД одна из наиболее популярных в веб-приложениях — подавляющее большинство CMS использует именно MySQL (часто только её, без альтернатив), а почти все веб-фреймворки поддерживают MySQL уже на уровне базовой конфигурации (без дополнительных модулей).
MariaDB — система управления реляционными базами данных
MariaDB — ответвление реляционной СУБД MySQL, разрабатываемое сообществом под лицензией GPL. MariaDB полностью совместима с приложениями, использующими MySQL, а переход на эту СУБД оправдан тем, что MySQL уже не так активно развивается.
PostgreSQL — свободная объектно-реляционная система управления базами данных
PostgreSQL — это популярная свободная объектно-реляционная система управления базами данных. PostgreSQL отличается высокой надёжность, базируется на языке SQL и имеет широкие возможности.
Масштабирование баз данных — партиционирование, репликация и шардинг
СУБД — это очень часто «узкое место» в производительности веб-приложений. В момент, когда сервер баз данных не может справится с нагрузками, производится масштабирование. Рассмотрим основные способы увеличения производительности СУБД.
SQL-инъекции — распространённый метод взлома веб-приложений и сайтов
SQL-инъекции — это один из распространённых способов взлома сайтов и веб-приложений, работающих с реляционными базами данных. Этот способ основан на внедрении в выполняемый приложением запрос к базе данных произвольного SQL-кода, переданного злоумышленником.

Тематические технологии:

Поисковая система ElasticSearch
СУБД Redis
Колоночная СУБД Scylla
Колоночная СУБД Cassandra
PostgreSQL — объектно-реляционная СУБД