Налаштування механізму кешування на основі Redis у вашому проекті Node.js (Частина 01)

Кешування є важливою концепцією при роботі з бекенд-системами, і дуже важливо налаштувати унікальний і стабільний механізм кешування для будь-яких типів застосунків. У цій статті ми дізнаємося, як налаштувати кешування в вашому застосунку за допомогою Redis.

pic

Оскільки я буду робити все з нуля, це може бути дуже довго і важко для того, щоб стежити за одним довгим посібником. Тому я розіб'ю це на кілька частин, тож давайте розпочнемо.

Попередні вимоги:

  1. Базове розуміння Node Js та Express Framework.

Привіт! Це моя перша стаття на Medium, і я активно починаю працювати з бекенд-розробкою на Node та Express Js. Сьогодні ми покриємо важливу концепцію в Node Js, а саме Кешування за допомогою Redis.

Сьогодні ми розглянемо не лише основи, а й дуже ефективний і стабільний механізм кешування, який можна реалізувати в нашому проекті.

Перед тим, як безпосередньо перейти до коду, давайте розберемо кілька термінів, які ми будемо використовувати протягом цього посібника.

Кеш і кешування

Якщо ми трохи знайомі з комп'ютерною пам'яттю, то, ймовірно, чули про кеш-пам'ять. Простими словами: кеш — це дані/інформація, які зберігаються в кеш-пам'яті. Вони швидкі й легкі для доступу процесором комп'ютера, на відміну від отримання з пам'яті (RAM).

Таким чином, ми можемо використовувати кеш-пам'ять для зберігання часто запитуваних даних і статичних контентів замість того, щоб щоразу запитувати базу даних. Це допомагає оптимізувати запити до бази даних і заощаджує час. Тому, як і наша кеш-пам'ять на комп'ютері, Redis надає нам платформу для зберігання даних як кеш.

Процес отримання і зберігання даних у кеш-пам'яті називається Кешуванням.

Чому нам потрібне кешування?

Кешування може бути дуже корисним з наступних причин:

  1. Обробка повторюваних запитів з кешу економить час і ресурси для інших завдань.
  2. Це дозволяє обробляти більше одночасних користувачів, зменшуючи навантаження на сервери бази даних.
  3. Швидші часи відгуку роблять застосунок більш плавним.

Є багато корисних випадків використання кешування, але давайте не будемо затримуватися на цьому. Ви зрозумієте, як це працює, коли ми перейдемо до практики.

Що таке Redis і як він працює?

Redis — це система зберігання даних в пам'яті з відкритим кодом, яка часто використовується як база даних, кеш і брокер повідомлень. Вона може зберігати дані в різних типах, таких як рядки, хеші, множини тощо. Дані зберігаються у вигляді пар "ключ-значення".

{  
 "myKey" : "some value to the key",  
}

Отже, якщо ми з'ясували деякі концепції того, що ми намагаємося зробити, давайте перейдемо до основної частини:

Встановлення Redis і NodeJs

Я припускаю, що ви вже встановили Node.js на вашому комп'ютері. Якщо ні, ви можете встановити останню версію з тут. Якщо Node.js вже встановлено, оновіть його до останньої версії за допомогою:

# Перевірте версію Node.js:  
node -v # Має вивести "v23.5.0 || v22.12.0".  

# Оновіть Node.js, якщо він старіший за v22.12.0  
встановіть nvm (менеджер версій node)  

nvm install   
nvm use  # Перейдіть на новішу версію

Ви можете встановити Redis, перейшовши на офіційний сайт Redis, щоб отримати redis-cli. Поточна версія Redis підтримується лише в Linux і MacOS, але не в Windows. Тому, якщо ви використовуєте Windows, вам потрібно буде встановити wsl2 на вашому комп'ютері.

Ви можете слідувати інструкціям для інших ОС, а ось як ви можете встановити Redis на Windows:

  1. Встановіть WSL на вашому комп'ютері

Відкрийте PowerShell або командний рядок Windows в режимі адміністратора, клацнувши правою кнопкою миші та вибравши "Запустити від імені адміністратора".
Тепер введіть:

wsl --install # це встановлює Ubuntu як за замовчуванням

Потім введіть наступну команду в тому ж самому терміналі PowerShell, щоб отримати термінал ubuntu:

pic

отримання терміналу ubuntu з powershell

Якщо ви використовуєте старішу версію, ось детальна інформація про встановлення wsl.

2. Встановлення Redis у WSL

Після того, як ви запустили Ubuntu на Windows, для встановлення останніх стабільних версій Redis з офіційних пакетів виконайте наступні команди:

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg  

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list  

sudo apt-get update  
sudo apt-get install redis

Тепер запустіть Redis сервер за допомогою:

sudo service redis-server start # це може запитати пароль  

# введіть пароль, який вас попросять налаштувати під час інсталяції Linux дистрибутива

3. Підключення до Redis Cli

Після запуску Redis ви можете протестувати з’єднання, ввівши redis-cli:

redis-cli

Перевірте з’єднання за допомогою:

pic

тестування з’єднання з redis

Тепер все необхідне встановлено, давайте перейдемо до нашого коду.

Ще одна важлива річ перед початком: Для Node.js існують два популярних клієнти Redis: ioredis та node-redis.

У цьому курсі ми будемо використовувати node_redis, який є сучасним і високопродуктивним Redis клієнтом для Node.js.

Встановлення redis

Щоб встановити redis у вашу систему, просто виконайте наступну команду:

npm i redis

Ще одна річ: оскільки ми намагаємося налаштувати кеш для дещо складніших проектів, то тут я дам загальний огляд структури папок нашого застосунку і поясню механізм кешування.

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

Давайте почнемо зі структури папок, яку ми будемо використовувати для застосунку. Тут я буду використовувати додаток для публікації блогів як приклад для налаштування механізму кешування. Не хвилюйтеся, я навчу вас так, що ви зможете легко зрозуміти, як це використовувати в будь-яких застосунках.

Структура папок

blog-app/  
├── public/ # Статичні файли (зображення, CSS, JS для клієнта)  
│ ├── images/  
│ ├── css/  
│ └── js/  
├── src/   
│ ├── config/   
│ ├── routes/   
│ │ ├── auth.js # Роути для автентифікації  
│ │ └── blog.js # Роути для блогу  
│ ├── controllers/ # Обробники роутів (бізнес-логіка)  
│ ├── models/   
│ ├── services/   
│ │ ├── authService.js  
│ │ ├── cache.js # основна логіка кешування  
│ ├── middlewares/   
│ │ ├── authMiddleware.js  
| │ ├── clearHash.js  
│ └── app.js   
├── .env

Не має значення, як ви налаштуєте структуру папок, головне — це концепція. Тому ми більше зосередимося саме на ній.

До цього моменту ми налаштували наш проект і встановили все, що будемо використовувати далі. У наступній частині ми розпочнемо реальний кодинг. Сподіваюся, вам сподобається.

Не забудьте підписатися і залишити коментар, як вам контент. Дякую за увагу!

Перекладено з: Setting Up Your Redis Powered Caching Mechanism in Your Node Js Project (Part 01)

Leave a Reply

Your email address will not be published. Required fields are marked *