@developer007

В каких случаях использовать — redis или memory в mysql?

1) В каких случаях вы стали бы использовать redis для хранения кеш данных (или не кеш), а в каких storage engine = MEMORY (в MySQL ) ?

----
2) есть еще любопытный костыль - InnoDB on RAMdisk , кто что думает по этому поводу?
  • Вопрос задан
  • 2801 просмотр
Решения вопроса 2
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
В каких случаях вы стали бы использовать redis для хранения кеш данных (или не кеш), а в каких storage engine = MEMORY
Лично я - наверное во всех случаях, в которых Redis для этого подходит. От части по тому, что проекты требующие кэширования такого уровня, в основном (*конкретно в моей практике, по факту - это не говорит ни о чём) комплектуются Postgres'ом.

Среди прочих достоинств - редиска умеет сохранять данные да диск, это может быть важно/нужно.

В остальных случаях, главное - без фанатизма это делать. Нет "едноправильного" решения, которое бы дало 100% результат. У Вас определенные требования к задаче, есть инструмент. Если MEMORY_ENGINE работает нормально (т.е. Вас показатели устраивают), и у Вас уже установлен MySQL и он работает - зачем тащить ещё Redis? Это усложнит систему, хоть и не сильно.

Если у Вас нет MySQL, или MEMORY_ENGINE по какой-то причине не устроил, например, Вам нужно сохранять данные на диск или [причина-N] - берём Redis.

Так же, стоит заметить, что функциональность MEMORY_ENGINE немного шире, в виду наличия полноценного SQL-движка, и в целом логически отличается от редиски.

А есть ещё Memcached...

2) есть еще любопытный костыль - InnoDB on RAMdisk , кто что думает по этому поводу?
По моему, решение уровня "так себе". Мне эта идиома не нравится.

Да, и в целом - Redis - это именно кэш-хранилище, со скроком жизни кэша "из коробки" (как пример), MEMORY_ENGINE - это полноценная таблица, со всеми вытекающими из этого фактами. Функционал, как я уже писал выше - немного разный...

P.S. В MySQL я помню, грозились ввести какой-то новый движок, как раз для того, что бы "затмить" все Redis'ы с Memcached'ами вместе, но что-то я не нахожу информации по этому поводу... а ведь точно помню, что читал такое!
Ответ написан
Комментировать
Когда на сайте малая нагрузка и не упираешься в потолок ресурсов, то можно обойтись и без них. Хотя применение кеширования, как минимум, способствует положительному восприятию пользователем из-за более быстрой отдачи популярного контента.
О том в каких случаях рекомендуется использовать MEMORY Storage Engine стоит почитать в
16.3 The MEMORY Storage Engine, секция "When to Use MEMORY or MySQL Cluster".

Как заметил Евгений Вольф , ещё имеется Memcached. Он достаточен для кеширования сессий пользователя, подсчёта статистики кликов и короткоживущих данных.

В целом, разница между ними состоит в SQL vs NoSQL, помимо технических ограничений. Обычно, если данные имеют чёткую структуру и типы данных, то лучше SQL.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
riky
@riky
Laravel
redis - скорее всего быстрее.
memory mysql - можно работать не только как key-value но и делать разные выборки/сортировки/группировки и тд.
в редисе тоже есть кое какие структуры данных помимо key-value но другие, далеко не те что предоставляют реляционные БД (их нужно еще изучать и привыкать).

поэтому выбор или простота и скорость или функционал sql.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы