2010-10-19 4 views
49

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

+0

Вы читали это: http://www.mysqlperformanceblog.com/2009/08/27/looking-at-redis/? Я не понимаю всех (я французский), но это кажется интересным. – MatTheCat

+0

Спасибо. Да, это интересно. Тем не менее, я все еще не уверен в практических приложениях. –

+0

Связанный, но не сопоставляемый с MySQL: http://stackoverflow.com/questions/7888880/what-is-redis-and-what-do-i-use-it-for?rq=1 –

ответ

67

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

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

15

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

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

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

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

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

+1

Спасибо - возможно, я задаю вопрос не так, но если я не понимаю, когда более целесообразно использовать Redis, чем MySQL, я не могу ответить ни на один вопрос! –

12

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

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

Redis has some very neat features такие как наборы, списки и отсортированные списки.

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

4

MySql -

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

Redis -

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

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

  • Нет связанных вопросов^_^