Использование Redis в качестве кэша для Node.js Приложения
Redis - это хранилище структур данных в памяти, используемое в качестве распределенной базы данных ключ-значение в памяти, кэша и посредника сообщений. Его можно использовать в качестве распределенного кэша для ускорения работы приложений. Кэширование - это метод, используемый для хранения регулярно используемых данных в пространстве.
Использование Redis в качестве кеша для приложений Node.js
Redis занимает меньше времени при обслуживании повторяющихся запросов, чем при каждом обращении к базе данных.
Node. js это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом, используемая для создания масштабируемых веб-приложений. Node. js приложения в основном привязаны к вводу-выводу, поскольку большую часть времени они имеют дело с операциями ввода-вывода. Кэширование может значительно повысить производительность Node. js приложений, при условии их эффективного использования.
В этой статье будет рассмотрено, как использовать Redis в качестве кэша для Node. js приложения. В нем описаны шаги по запуску сервера Redis и его использованию вместе с Node. js применение.
Мы построим простой Node. js приложение и показать, как использовать Redis для кэширования этого данные электронного приложения, повышая его производительность.
Предпосылки
Прежде чем вы начнете, вам необходимо установить следующее:
- Переделать Node. js
- Создание образца Node. js
Чтобы продемонстрировать, как использовать Redis в качестве кэша для Node. js приложения, мы создадим простой Node. js приложение, которое считывает данные из базы данных PostgreSQL. Давайте создадим Node. js проект с именем redis-cache, используя приведенную ниже команду:
mkdir redis-cache && cd redis-cache
Запустите команду npm init, чтобы сгенерировать файл конфигурации по умолчанию package. json и установить модули express и pg, выполнив следующую команду:
npm install express pg --save
Создайте файл server. js в корневом каталоге проекта и введите следующий код:
const express = require("express"); const { Client } = require("pg"); const PORT = 3000; const HOST = "127.0.0.1"; const connection = { user: process.env.POSTGRESQL_USER, password: process.env.POSTGRESQL_PASSWORD }; const client = new Client(connection); client.connect(); let getAllUsers = async () => { try { let res = await client.query("SELECT * FROM users"); return res.rows } catch (e) { throw new Error(e); } }; const app = express(); app.get("/users", async (req, res) => { let users = await getAllUsers(); console.log(users); res.send(users); }); app.listen(PORT, HOST); console.log(`Server running on ${HOST}:${PORT}`);
Приведенный выше код создает экспресс-сервер, который извлекает данные из таблицы users и отправляет их в качестве ответа. Следуйте приведенным здесь инструкциям, чтобы создать таблицу users и добавить несколько примеров записей.
Теперь запустите Node. js обработайте и запустите пример приложения, выполнив приведенную ниже команду:
node server.js
Настройка и запуск сервера Redis
Как только у вас будет Node. js приложение готово, вы можете настроить и запустить сервер Redis. Следуйте инструкциям в соответствии с вашей операционной системой на странице загрузки Redis, чтобы установить и запустить сервер Redis.
Подключение Node. js Приложение к серверу Redis
Как только сервер Redis будет запущен, вы сможете подключить Node. js приложение к серверу Redis. Node. js предоставляет различные модули для управления базами данных Redis. В этом руководстве мы будем использовать node-redis. Чтобы установить модуль, запустите приведенную ниже команду в корневом каталоге проекта:
npm install redis --save
Как только модуль будет установлен, укажите его в верхней части server. js сохраните файл и предоставьте информацию о подключении к серверу Redis.
const redis = require("redis"); const redisPort = 6379; const redisHost = "127.0.0.1"; const redisClient = redis.createClient({ port: redisPort, host: redisHost });
Использование Redis в качестве кэша для Node. js
Теперь, когда сервер Redis настроен и Node. js приложение подключено к нему, мы будем использовать Redis в качестве кэша для приложения. Мы установим пару ключ/ значение в Redis с ответом из приложения и добавим слой кэша в приложение, чтобы проверить, существуют ли данные в хранилище Redis. Если данные найдены в кэше Redis, они будут отправлены в качестве ответа, в противном случае приложение извлечет данные из базы данных PostgreSQL.
Прежде чем мы добавим уровень кэша в приложение, мы добавим код для хранения данных на сервере Redis после того, как они будут извлечены из базы данных PostgreSQL. Измените функцию getAllUsers() следующим образом:
let getAllUsers = async () => { try { let res = await client.query("SELECT * FROM users"); let users = res.rows; redisClient.set( "users", JSON.stringify(users) ); return users; } catch (e) { throw new Error(e); } };
Он сохраняет ответ из базы данных PostgreSQL в виде строки JSON для ключевых пользователей.
Давайте добавим слой кэша к маршруту /users. Определите функцию checkCache(), которая будет проверять, присутствуют ли данные в хранилище Redis.
let checkCache = (req, res, next) => { redisClient.get("users", (err, data) => { if (err) { return next(err); } if (data !== null) { res.send(JSON.parse(data)); } else { next(); } }); };
Он извлекает значение, сохраненное для ключевых пользователей, и отправляет его в качестве ответа. Если он не найдет данные в хранилище Redis, он вызовет функцию next().
Позвоните в ch Функция eckCache() перед фактическим маршрутом /users.
app.get("/users", checkCache, async (req, res) => { let users = await getAllUsers(); console.log(users); res.send(users); });
Теперь запустите приложение и получите доступ к конечной точке, чтобы протестировать уровень кэша.
node server.js
Если данные присутствуют в хранилище Redis, приложение вернет данные из хранилища Redis. В противном случае он будет извлекать данные из базы данных PostgreSQL.
Теперь, когда у нас есть Redis в качестве кэша для нашего Node. js приложение, наше приложение выиграет от повышения производительности, обеспечиваемого сервером Redis.
Вывод
Redis - это мощное и масштабируемое решение для кэширования данных, используемое Node. js приложения. Его легко настроить и интегрировать с Node. js применение и повышает производительность приложений. Мы видели, как использовать Redis a это кэш для Node. js приложения в этой статье.