Кэширование с помощью Redis и Node.js



Книга Кэширование с помощью Redis и Node.js



Redis предлагает идеальный способ временного хранения данных, позволяющий избежать необходимости повторного выполнения дорогостоящих операций и запросов.





Redis работает по системе “ключ-значение”, что позволяет восстанавливать результаты на основе заданного ключа. Каждый ключ должен быть уникальным и иметь тип string.


Все введенные в Redis данные имеют TTL (время жизни), определенное в секундах. Когда TTL становится равным 0, данные полностью удаляются и оказываются недоступными.


В этой статье будет использован открытый API agify.io для предсказания возраста человека на основе его имени. В данном случае это отличный пример, так как ключом будет имя, а значением  —  результат!


Настройка среды


Прежде чем приступить к работе, настроим все необходимое. Начнем с Redis!


Настройка Redis отлична для каждой операционной системы. В данной статье не будет объяснения, как запустить Redis. Чтобы узнать, как это сделать, изучите документацию.


Как только настройка Redis будет завершена, сразу же переходите к настройке среды NodeJS.


В новой папке выполните npm init -y, а затем npm install -S axios redis.


Axios будет использоваться для вызовов API, поскольку эта библиотека проста в применении.


Redis  —  библиотека, которая нам понадобится для доступа к серверу Redis и взаимодействия с ним.





Подключение к серверу Redis


Прежде всего, подключимся к экземпляру Redis. По умолчанию Redis будет работать на порту 6379 и на хосте localhost. Это также значения по умолчанию, используемые пакетом Redis.


В JS-файле начнем с инициализации клиента и подключения к нему:




Если все сделано правильно на стороне Redis, после запуска этого кода вы увидите connected (подсоединено) в консоли.



Получение данных из API


Прежде чем углубиться в работу с Redis, быстро создадим функцию для получения данных из API.


URL будет иметь следующий вид: https://api.agify.io/?name={name}.




Не забудьте запросить axios, чтобы иметь возможность использовать эту библиотеку!



Сохранение результата в Redis во избежание повторной выборки


Теперь, имея доступ к данным, нужно убедиться в том, что мы будем получить их только один раз. После этого необходимо сохранить данные в Redis, чтобы избежать повторного вызова API для одного и того же имени.


Сначала проверим, существует ли значение в Redis. Для этого создадим следующую функцию:



Эта функция позволит получить результат, а также узнать, существует ли значение.


Создадим еще одну функцию, которая позволит сохранить только что полученное значение прямо в Redis:



Теперь, когда у нас есть все необходимое, используем все вместе:



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


Установка TTL


Теперь, когда появилась возможность сохранять данные в Redis, нужно установить TTL на случай, если результат API изменится в будущем. Этот момент нельзя пропустить!


Для этого немного отредактируем функцию сохранения:



Эта новая функция позволяет установить время истечения срока действия для входных данных. Он истечет через 10 000 секунд.


Доступ к входным данным через командную строку


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



  • GET <key>;

  • TTL <key>.


Первая команда вернет значение, а вторая  —  время, оставшееся до истечения срока действия!




Вот так просто можно настроить NodeJS для соединения с Redis!



541   0  

Comments

    Ничего не найдено.