Redis cache vs с использованием памяти напрямую

Я еще не использовал Redis, но я слышал об этом и планировал попробовать его хранить в кеше.

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

var cache = {
    key: {

    },
    key: {

    }
    ...
}

В чем преимущество Redis?

Ответ 1

Redis - это сервер удаленной структуры данных. Это, конечно, медленнее, чем просто хранение данных в локальной памяти (поскольку он включает в себя параллельные сеансы сокетов для извлечения/хранения данных). Однако он также обладает некоторыми интересными свойствами:

  • Доступ к Redis осуществляется всеми процессами ваших приложений, возможно, запущен на нескольких узлах (чего не может достичь местная память).

  • Хранилище памяти Redis достаточно эффективно и выполняется в отдельном процессе. Если приложение работает на платформе, чья память собирает мусор (node.js, java и т.д.), Она позволяет обрабатывать гораздо больший объем кэша/хранилища. На практике очень большие кучи плохо работают с отображенными мусором языками.

  • При необходимости Redis может сохранять данные на диске.

  • Redis - это немного больше, чем простой кэш: он предоставляет различные структуры данных, различные политики выселения элементов, блокировки очередей, pub/sub, атомарность, сценарии Lua и т.д.

  • Redis может реплицировать свою деятельность с помощью механизма master/slave для обеспечения высокой доступности.

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