Когда использовать хранилище ключей/значений, например, Redis вместо/рядом с базой данных SQL?

Я отлично читал о хранилищах ключей/значений, таких как Redis, но я не могу понять, когда пришло время использовать его в приложении.

Скажем, я занимаюсь разработкой веб-приложения; Я знаю, какой стек я собираюсь использовать для интерфейсного, back-end, database (s) и т.д., Каковы некоторые сценарии, в которых я бы пошел "о, нам также нужен Redis для X, Y или Z".

Я был бы признателен за примеры node.js, а также примеры не node.js.

Ответ 1

Я не могу понять, когда пришло время использовать его в приложении.

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

Redis, однако, не является заменой NoSQL для классических реляционных баз данных, поскольку он не поддерживает многие стандартные функции мира RDBMS, такие как запросы ваших данных, которые могут замедлить их. Замена - это, скорее, базы данных документов, такие как MongoDB или CouchDB, и Redis отлично дополняет определенные функциональные возможности, где удобна скорость и поддержка расширенных структур данных.

Ответ 2

Я думаю, что ничто не объясняет лучше варианты использования Redis, чем эта статья: http://antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html

Могу поспорить, у вас будет ага! момент. ;)

Цитата из предыдущего читателя:

Я читал о Redis раньше и слышал, как компании используют его, но никогда полностью не понимал его цели. Прочитав это, я могу сказать, что теперь понимаю Redis и насколько он полезен. Удивительно, что, услышав так много об этом, все это заняло относительно простую статью.

Цитата из статьи:

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

Примеры использования, к которым относится статья: asd

  • Медленные списки последних товаров на вашей домашней странице
  • Таблицы лидеров и связанные с ними проблемы
  • Порядок по голосам и времени пользователя
  • Реализация истекает на предметы
  • Подсчет вещей
  • Уникальные N предметов за заданный промежуток времени
  • Анализ в реальном времени того, что происходит: статистика, антиспам или что-то еще
  • Pub/Sub
  • Очереди
  • Кэширование

Ответ 3

  • Я хотел бы использовать Redis в проектах в реальном времени. Я недавно сделал для одной системы отслеживания GPS, которая ранее была основана на MySQL в качестве базы данных.

    ПРЕИМУЩЕСТВО

    1. Каждый раз, когда трекер передает данные, мне не нужно открывать mysql-соединение и сохранять на нем. Мы можем сохранить его на Redis, а затем перенести на MySQL, используя другой процесс. Это позволит избежать одновременного подключения от нескольких трекеров к MySQL.
    2. Я могу опубликовать все эти данные GPS, а другие клиенты (javascript/android) могут подписаться в режиме реального времени, используя очередь сообщений на основе redis
    3. Я могу активировать оповещения в реальном времени

Ответ 4

С одной стороны, Redis не является реляционной базой данных. Если вам понадобится SQL "JOIN", вы не захотите использовать Redis или любую другую нереляционную базу данных. Redis быстрее, чем большинство реляционных баз данных. Если вы только собираетесь делать запросы с ключом: значение пары, то вы захотите использовать Redis.