Що таке Hash у Redis?
Hash у Redis - це структура даних "ключ → значення" всередині одного ключа Redis.
По суті, це міні-об'єкт чи словник, де під одним Redis-ключем можна зберігати кілька пар поле:значення.
Основні властивості
- Являє собою асоціативний масив (map, dictionary).
- Кожен елемент - пара
field:value. - Підходить для зберігання об'єктів, профілів користувачів, налаштувань.
- Значення - це рядки (Redis String).
Приклад
bash
HSET user:1 name "Anna" age "27" city "Moscow"
HGETALL user:1Результат:
javascript
1) "name"
2) "Anna"
3) "age"
4) "27"
5) "city"
6) "Moscow"Ключ user:1 містить три поля: name, age, city.
Основні команди
| Команда | Опис |
|---|---|
HSET key field value [field value ...] | встановити одне чи кілька полів |
HGET key field | отримати значення поля |
HGETALL key | отримати всі поля й значення |
HDEL key field [field ...] | видалити поле |
HEXISTS key field | перевірити наявність поля |
HKEYS key | отримати список усіх полів |
HVALS key | отримати список усіх значень |
HLEN key | кількість полів |
HINCRBY key field increment | збільшити числове значення поля |
HSETNX key field value | встановити поле, якщо воно не існує |
Приклад оновлення й підрахунку
bash
HSET user:2 name "Ivan" points "100"
HINCRBY user:2 points 50
HGET user:2 pointsРезультат:
javascript
"150"Внутрішня будова
Redis зберігає Hash у двох форматах:
- Ziplist - якщо полів мало (до ~512) і вони короткі; економить пам'ять.
- Hashtable - якщо даних багато чи поля довгі; забезпечує швидкий доступ.
Redis автоматично обирає формат залежно від розміру.
Застосування
- Зберігання даних користувача, профілю, сесії.
- Кешування об'єктів з бази даних.
- Лічильники й стани всередині мікросервісів.
- Швидкий доступ до окремих полів без завантаження всього об'єкта.
Приклад використання як кеш
bash
HSET product:42 name "Phone" price "899" stock "24"
HGET product:42 priceРезультат:
javascript
"899"Так хеш може представляти рядок даних з таблиці SQL у пам'яті Redis.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.