Когда использовать Redis вместо MySQL для приложений PHP?

Я смотрел на Редиса. Это выглядит очень интересно. Но с практической точки зрения, в каких случаях было бы лучше использовать Redis над MySQL?

Ответ 1

Не обращая внимания на дебаты по NoSQL против SQL, я думаю, что лучший подход - объединить их. Другими словами, используйте MySQL for для некоторых частей системы (сложные поиски, транзакции) и redis для других (производительность, счетчики и т.д.).

По моему опыту, проблемы с производительностью, связанные с масштабируемостью (много пользователей...), в конечном итоге вынуждают вас добавить какой-то кеш для снятия нагрузки с сервера MySQL, и redis/memcached очень хорош в этом.

Ответ 2

Я не эксперт по Redis, но из того, что я собрал, оба довольно разные. Redis:

  • Является не реляционной базой данных (нет причудливой организации данных).
  • Сохраняет все в памяти (быстрее, меньше места, возможно, менее безопасно в случае сбоя)
  • Менее широко используется на разных веб-хостах (если вы не принимаете себя)

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

Redis также может использоваться в качестве кеша для некоторых данных MySQL, к которым будет обращаться очень часто (т.е. загружать его, когда пользователь входит в систему).

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

Ответ 3

MySQL - это реляционное хранилище данных. Если сконфигурировано (например, с использованием таблиц innodb), MySQL является надежным хранилищем данных, предлагающим транзакции ACID.

Redis - это база данных NoSQL. Это быстрее (если используется правильно), потому что он торгует скоростью с надежностью (редко выполняется с помощью fsync, так как это резко ухудшает производительность) и транзакций (которые можно аппроксимировать - медленно - с SETNX).

Redis имеет некоторые очень аккуратные функции, такие как наборы, списки и отсортированные списки.

Эти слайды в Redis перечисляют сбор статистики и управление сеансом в качестве примеров. Существует также твиттер-клон, написанный с помощью redis в качестве примера, но это не означает, что Twitter использует redis (использование твиттера MySQL с тяжелым кэшированием memcache).

Ответ 4

MySql -

1) Структурированные данные 2) КИСЛОТА 3) Тяжелые транзакции и поисковые запросы.

Redis -

1) Неструктурированные данные 2) Простой и быстрый поиск. напр. - токен сессии 3) используйте его для слоя кеширования.

Ответ 5

Согласно официальному веб-сайту, Redis - это хранилище структуры данных в памяти с открытым исходным кодом (лицензировано BSD), которое используется в качестве базы данных, кэша и посредника сообщений. На самом деле Redis - это расширенное хранилище ключей. Это буквально супер быстро с удивительно высокой пропускной способностью, поскольку он может выполнять приблизительно 110000 операций SET в секунду, около 81000 операций GET в секунду. Он также поддерживает очень богатый набор типов данных для хранения. Фактически, Redis каждый раз хранит данные в памяти, а также постоянную базу данных на диске. Итак, это идет с компромиссом: удивительная скорость с ограничением размера для наборов данных (согласно памяти). В этой статье, чтобы иметь некоторые тесты по сравнению с MySQL, мы будем использовать Redis только в качестве механизма кэширования.

Читать здесь: Redis vs MySQL Benchmarks