Когда следует использовать Redis вместо MySQL для приложений PHP? - PullRequest
63 голосов
/ 19 октября 2010

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

Ответы [ 6 ]

78 голосов
/ 19 октября 2010

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

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

20 голосов
/ 19 октября 2010

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

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

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

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

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

12 голосов
/ 19 октября 2010

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

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

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

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

6 голосов
/ 08 декабря 2015

MySql -

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

Redis -

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

1 голос
/ 21 апреля 2019

Redis, SQL (+ NoSQL) имеют свои преимущества + недостатки и часто работают бок о бок:

  • Redis - локальные переменные перемещены в отдельное приложение
    • Легкоперейти от локальных переменных / прототипа
    • Постоянное хранение
    • Несколько пользователей / приложений все видят одни и те же данные
    • Масштабируемость
    • Failover
    • (-) Трудно выполнить более сложные запросы / вопросы к данным
  • NoSQL
    • Сброс необработанных данных в «базу данных»
    • Все / большинство функций Redis
    • (-) Сложнее выполнять сложные запросы по сравнению с SQL
  • SQL
    • Расширенные запросы между данными
    • Все / большинство функций Redis
    • (-) Необходимо поместить данные в «схему» (аналитический лист / Excel)
    • (-) Немного сложнее получить / ввести простые значения, чем Redis / NoSQL

(различные решения SQL / NoSQL могут различаться. Вам следует ознакомиться с 'CAP theorem 'и' ACID (информатика) 'о том, почему одна система не может дать вам все одновременно)

0 голосов
/ 13 апреля 2019

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

Читать здесь: Тесты Redis и MySQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...