Модуль 3

Встановлення Redis та перший запуск

Ось готовий урок, згенерований за твоїм майстер-промптом. Приготуйся, зараз ми будемо прискорювати інтернет! 🚀


🎓 Тема уроку: Встановлення Redis та перший запуск

Привіт, друзі! 👋 Це CS50 (умовно), і сьогодні ми поговоримо про швидкість.


1. 🔥 Вступ: Проблема «довгої пам’яті»

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

Ситуація А: Щоб перевірити, чи є у клієнта знижка, ви щоразу йдете в підвал, відкриваєте величезну запилену шафу, шукаєте папку з 2015 року, гортаєте сторінки... Це займає 5 хвилин. Черга лютує. Кав’ярня банкрутує.

Ситуація Б: У вас прямо перед очима на столі лежить стікер, де записані імена постійних клієнтів. Ви кидаєте оком — 1 мілісекунда — і кажете: «О, привіт, Максе! Твоя знижка діє».

Питання до вас: Де тут класична база даних (MySQL/PostgreSQL), а де — Redis?

Так от: * Шафа в підвалі — це ваш жорсткий диск (HDD/SSD). Він надійний, зберігає все роками, але він повільний порівняно з процесором. * Стікер на столі — це Redis. Це пам’ять, яка працює миттєво.

Навіщо нам цей урок? У сучасному вебі ніхто не хоче чекати завантаження сторінки 2 секунди. Ми хочемо, щоб все літало. Redis — це інструмент, який перетворює "повільний" сайт на "миттєвий". Сьогодні ми встановимо цей "реактивний двигун" і натиснемо кнопку "Пуск".


2. 🧠 Теоретична база: Що це взагалі таке?

Давайте розберемося без складних термінів.

Redis (Remote Dictionary Server) — це сховище даних типу "ключ-значення", яке живе в оперативній пам’яті (RAM).

⚙️ Як це працює «під капотом»?

Уявіть велетенський Python Dictionary (dict) або JSON-об'єкт, який висить у вашій оперативці. Коли ваша програма каже: "Збережи користувача", Redis не крутить диск, не записує файли. Він просто міняє стани транзисторів у плашці RAM. Це відбувається за наносекунди.

Що треба запам’ятати залізно: 1. Key-Value: Все зберігається парами. Є ключ (назва) і значення (вміст). Як у гардеробі: даєш номерок (ключ) — отримуєш пальто (значення). 2. In-Memory: Якщо вимкнути світло (або сервер), дані з оперативної пам’яті зникнуть (якщо ми їх спеціально не збережемо, але про це пізніше). 3. Клієнт-Сервер: Redis — це сервер (він чекає команд). Ви підключаєтесь до нього через консоль (redis-cli) або через код вашого сайту.

Інтуїтивно: Думайте про Redis як про спільний буфер обміну (Clipboard) для всіх ваших програм. Одна програма скопіювала, інша — вставила.


3. 🧪 Приклади: Від «Привіт» до реальності

Ми будемо використовувати Docker, тому що це стандарт індустрії. Це дозволяє запустити Redis в ізольованому контейнері, не засмічуючи вашу систему. (Якщо у вас немає Docker, можна встановити локально через brew install redis на Mac або apt install redis на Linux, але логіка та сама).

Крок 1: Запуск сервера (Офіціант виходить на зміну)

Відкрийте термінал і введіть:

docker run --name my-redis -d -p 6379:6379 redis
  • docker run: Запусти контейнер.
  • -d: Detached mode (працюй у фоні, не блокуй мені термінал).
  • -p 6379:6379: Відкрий порт 6379 (це стандартний порт Redis, як 80 для вебу).

Крок 2: Підключення клієнта (Ми кличемо офіціанта)

Тепер нам треба "пульт керування" — утиліта redis-cli. Оскільки Redis у контейнері, ми заходимо всередину нього:

docker exec -it my-redis redis-cli

Ви побачите щось таке: 127.0.0.1:6379> Це означає: "Я слухаю. Що робити?"

Приклад А: Пін-понг

Найпростіша перевірка, чи живий пацієнт.

Введіть:

PING

Що ви очікуєте побачити? Redis відповість: PONG. Це класика. Якщо ви бачите PONG — вітаю, ви встановили Redis!

Приклад Б: Збереження даних (Сеттер)

Давайте збережемо ім’я нашого інструктора.

SET teacher "David Malan"

Відповідь: OK. Ми щойно записали дані в RAM.

Приклад В: Отримання даних (Геттер)

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

GET teacher

Відповідь: "David Malan".

Приклад Г: Реальний кейс (Кешування)

Уявіть, що користувач зайшов на сайт. Ми не хочемо, щоб він логінився кожні 5 хвилин. Ми створюємо сесію.

SET session:user:42 "active_and_logged_in"

Тепер ми можемо миттєво перевіряти: GET session:user:42. Якщо повернеться "active...", значить пускаємо його. Якщо (nil) — хай логіниться знову.


4. 🛠 Практична частина

А тепер ваша черга! Не просто читайте, а вводьте команди. Пальці мають запам’ятати.

Завдання 1: Особисте Збережіть у Redis (використовуючи redis-cli) свою улюблену страву під ключем favorite_food. Перевірте, чи воно збереглось командою GET.

Завдання 2: Перезапис Змініть значення ключа favorite_food на щось інше (наприклад, "Борщ"). Зробіть GET знову. Питання: Чи зберіг Redis попередню страву? (Ні, це key-value, ключ унікальний).

Завдання 3: Видалення Ви вирішили сісти на дієту. Видаліть запис про їжу командою:

DEL favorite_food

Спробуйте тепер зробити GET favorite_food. Що ви бачите? (nil). Це означає "пусто", "нічого".

Завдання 4: Міні-кейс "Місія нездійсненна" 🕵️‍♂️ Redis вміє видаляти дані автоматично через певний час. Це ідеально для SMS-кодів підтвердження. Спробуйте команду:

SET secret_code "12345" EX 10

(EX 10 означає: видали через 10 секунд). Швидко робіть GET secret_code кілька разів. Через 10 секунд ви побачите магію — дані зникнуть самі.

Завдання 5: А що, якщо... Що буде, якщо ви спробуєте отримати ключ, якого не існує? Спробуйте GET unicorn.


5. 💡 Мислення як у розробника

Як думає новачок:

"О, Redis швидкий! Буду зберігати в ньому ВСЕ: користувачів, замовлення, історію платежів за 5 років!"

🚫 Помилка: Оперативна пам’ять дорога і обмежена. Якщо сервер перезавантажиться раптово, дані можуть зникнути (без спеціальних налаштувань).

Як думає досвідчений інженер:

"Я буду зберігати в Redis те, що повинно бути швидким (кеш, сесії, лічильники лайків у реальному часі) або тимчасовим. А важливі дані, які не можна губити (гроші, акаунти), хай лежать у надійному PostgreSQL."

Порада з практики: Завжди називайте ключі зрозуміло, використовуючи двокрапку як роздільник. * Погано: user123 * Добре: user:123:profile або app:cache:homepage


6. 🧩 Підсумок

Отже, що ми сьогодні зробили? 1. Зрозуміли, що Redis — це "стікер на столі" (швидка RAM), а не "шафа в підвалі" (диск). 2. Запустили Redis у контейнері 🐳. 3. Навчилися говорити з ним мовою SET та GET. 4. Створили повідомлення, яке саме знищується.

Тепер ви вмієте: Встановлювати та базово керувати найпопулярнішим in-memory сховищем у світі.

🎬 Тизер наступного уроку: Ви помітили, що ми зберігали лише прості рядки тексту? Але Redis набагато розумніший. У наступній серії ми дізнаємось, як зберігати списки (Lists), щоб створити власну стрічку новин, як у Твіттері, і множини (Sets), щоб рахувати унікальних відвідувачів сайту.

Не перемикайтесь! Це був CS50. Побачимось! 👋