Я смотрел на Редиса. Это выглядит очень интересно. Но с практической точки зрения, в каких случаях было бы лучше использовать Redis над MySQL?
Когда использовать Redis вместо MySQL для приложений PHP?
Ответ 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