Подтвердить что ты не робот

Использование redis в качестве кеша для базы данных mysql

Мне нужно создать решение, используя php, с базой данных mysql с большим количеством данных. У моей программы будет много заявок, я думаю, что если я буду работать с кешем и базой OO, у меня будет хороший результат, но у меня нет опыта.

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

Извините, если мой английский не очень хорош, я из Бразилии.

4b9b3361

Ответ 1

Да, redis хорош для этого. Но чтобы понять суть, в кэшировании есть два подхода. В зависимости от того, используете ли вы фреймворк (и который) или нет, у вас может быть первый вариант, доступный в стандарте или с использованием плагина:

  • Запросы базы данных кэша, то есть - выбранные запросы и их результаты будут храниться в redis для более быстрого доступа в течение заданного времени или до очистки кеша (полезно после обновления базы данных). В этом случае вы можете использовать встроенное кэширование запросов mysql, оно будет проще, чем использование дополнительного хранилища ключей или вы можете переопределить интеграцию с базой данных по умолчанию с вашим собственным классом, используя кеш (например http://pythonhosted.org/johnny-cache/).
  • Пользовательское кэширование, которое создает ваши собственные структуры, которые будут храниться в кеше, и периодически или вручную заполнять их данными, полученными из базы данных. Он более гибкий и потенциально более мощный, поскольку вы можете использовать встроенные функции redis, такие как списки или отсортированные наборы, которые значительно сокращают накладные расходы. Для этого требуется немного больше кодирования, но обычно он предлагает лучшие результаты, поскольку он более настраивается. Хорошим примером является сохранение лучших статей в виде redis-списка идентификаторов, а затем доступ к сериализованным статьям (-ам) с заданным идентификатором также из redis. Вы можете сохранить эту статью ненормализованной - т.е. Сериализованный объект может содержать идентификатор пользователя, а также имя пользователя, чтобы вы могли свести накладные расходы до дополнительных запросов до минимума.

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