Кешування є важливою концепцією при роботі з бекенд-системами, і дуже важливо налаштувати унікальний і стабільний механізм кешування для будь-яких типів застосунків. У цій статті ми дізнаємося, як налаштувати кешування в вашому застосунку за допомогою Redis.
Оскільки я буду робити все з нуля, це може бути дуже довго і важко для того, щоб стежити за одним довгим посібником. Тому я розіб'ю це на кілька частин, тож давайте розпочнемо.
Попередні вимоги:
- Базове розуміння Node Js та Express Framework.
Привіт! Це моя перша стаття на Medium, і я активно починаю працювати з бекенд-розробкою на Node та Express Js. Сьогодні ми покриємо важливу концепцію в Node Js, а саме Кешування за допомогою Redis.
Сьогодні ми розглянемо не лише основи, а й дуже ефективний і стабільний механізм кешування, який можна реалізувати в нашому проекті.
Перед тим, як безпосередньо перейти до коду, давайте розберемо кілька термінів, які ми будемо використовувати протягом цього посібника.
Кеш і кешування
Якщо ми трохи знайомі з комп'ютерною пам'яттю, то, ймовірно, чули про кеш-пам'ять. Простими словами: кеш — це дані/інформація, які зберігаються в кеш-пам'яті. Вони швидкі й легкі для доступу процесором комп'ютера, на відміну від отримання з пам'яті (RAM).
Таким чином, ми можемо використовувати кеш-пам'ять для зберігання часто запитуваних даних і статичних контентів замість того, щоб щоразу запитувати базу даних. Це допомагає оптимізувати запити до бази даних і заощаджує час. Тому, як і наша кеш-пам'ять на комп'ютері, Redis надає нам платформу для зберігання даних як кеш.
Процес отримання і зберігання даних у кеш-пам'яті називається Кешуванням.
Чому нам потрібне кешування?
Кешування може бути дуже корисним з наступних причин:
- Обробка повторюваних запитів з кешу економить час і ресурси для інших завдань.
- Це дозволяє обробляти більше одночасних користувачів, зменшуючи навантаження на сервери бази даних.
- Швидші часи відгуку роблять застосунок більш плавним.
Є багато корисних випадків використання кешування, але давайте не будемо затримуватися на цьому. Ви зрозумієте, як це працює, коли ми перейдемо до практики.
Що таке 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:
- Встановіть WSL на вашому комп'ютері
Відкрийте PowerShell або командний рядок Windows в режимі адміністратора, клацнувши правою кнопкою миші та вибравши "Запустити від імені адміністратора".
Тепер введіть:
wsl --install # це встановлює Ubuntu як за замовчуванням
Потім введіть наступну команду в тому ж самому терміналі PowerShell, щоб отримати термінал ubuntu:
отримання терміналу 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
Перевірте з’єднання за допомогою:
тестування з’єднання з 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)