2016-01-07 2 views
0

Я получаю доступность отеля через сторонние службы, и ответ в настоящее время кэшируется в папке под webroot. Кэш основан на файлах. Но у меня есть несколько веб-сайтов, которые приносят доступность того же отеля, и, очевидно, они хранят кеш в соответствующей подпапке своих веб-корней.Самый быстрый вариант для кэширования на основе базы данных

Я хочу избежать кэширования на основе файлов по некоторым причинам, поэтому я не планирую хранить общую папку на сервере для целей кэширования.

Согласно моему требованию, лучшим вариантом, о котором я мог думать, является хранение кэша в базе данных. В настоящее время я использую общую базу данных MySQL для всех своих других материалов на веб-сайтах.

Операции, которые мне нужно быть быстрым являются

  1. кэш чтения, первичный ключ (множественный считывания одной записи должно быть возможным)
  2. написать одну строку кэша
  3. Исключить истекший кэш и вставить новые данные кэша ИЛИ Кэш обновлений с истекшим сроком действия с новыми данными

Другие операции, которые не заботятся, если они медленнее

  1. Просмотр журналов кэша/просмотр всех кэшированных записей
  2. Удаление кэша насыпью

Структура стола будет примерно

  1. ключ - хешированная алфавитно-цифровая клавиша - ОСНОВНОЙ
  2. значения - кэшированные данные - приблизительно 1 - 4 KB Данные - Текст
  3. last_updated - время даты & когда кэш был вставлен/обновлен

Имея знания о том, что мне не нужны все возможности СУБД, я думаю, что использование MySQL не является оптимальным вариантом.

Я не хочу использовать стороннее платное решение.

Мой вопрос заключается в том, какую базу данных я должен использовать для хранения кеша при условии, что функции мне нужны, и их приоритет быть быстрым?

+0

Почему бы не Sqlite? Должно существовать в памяти, если данные довольно малы и должны делать трюк бытия. –

ответ

0

Кэширование само по себе является в основном временной базой данных, поэтому это действительно зависит от вашего определения «кэширование на основе базы данных». Размер и масштабируемость приложения также следует учитывать, если вы не создаете логику, чтобы допускать различные типы кеширования с одинаковой логикой. Если вы имеете в виду SQL-кэширование, тогда имеет смысл использовать MySQL, поскольку у вас уже есть эта настройка. Если у вас есть выделенная база данных, и данные не слишком велики, то это должно быть прекрасно, но если ее производительность вам понадобится, рассмотрим некоторые другие варианты кеширования.

Вы можете для использования Memcache например, который является очень популярным и на мой взгляд очень проста в использовании: http://memcached.org/

Еще одно решение, которое я люблю и хорошо поддерживается в Redis. Redis - это не только система кеширования, но и может использоваться для нескольких разных звуков. Я фактически использовал его в качестве системы очередей. Это кеш памяти, который сохраняет это хорошо и быстро:
http://redis.io/

Это бесплатные решения и интеграция на разных языках программирования.

Какой язык вы используете для создания приложения?

+0

IMHO, Эти решения предназначены для больших данных (ГБ и ТБ), а не для данных среднего размера. Эти решения, возможно, не смогут приложить максимум усилий для такого размера данных. Поправьте меня, если я подумаю иначе. –

+0

Redis может быть чрезмерным в зависимости от приложения размера, но я не думаю, что эти решения были специально разработаны для больших данных, особенно потому, что Redis - это система кэширования на основе памяти, я считаю memcache подходящим решением для данных малого и среднего размера. Я никогда не слышал о том, что memcache разрабатывается или используется для больших данных, к этому моменту я, вероятно, использовал бы Redis. Существует даже ограничение на способ хранения memcache. Преимущество этих решений над MySQL заключается в том, что вам не нужно вручную проверять, истек ли срок действия данных. –

+0

Размер общего кеша может составлять несколько МБ, а в некоторых редких случаях - несколько сотен МБ. Проблема в том, что кеш должен быть доступен для чтения на двух разных серверах, которые связаны между собой в локальной сети. На этих серверах работает несколько доменов, необходим общий доступ к кешу между этими серверами. Будет ли redis или memcached использоваться совместно с двумя серверами? – Imdad

Смежные вопросы