В каких случаях использовать — redis или memory в mysql?
В каких случаях вы стали бы использовать 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.