Skip to main content

Що таке 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 у двох форматах:

  1. Ziplist - якщо полів мало (до ~512) і вони короткі; економить пам'ять.
  2. Hashtable - якщо даних багато чи поля довгі; забезпечує швидкий доступ.

Redis автоматично обирає формат залежно від розміру.

Застосування

  • Зберігання даних користувача, профілю, сесії.
  • Кешування об'єктів з бази даних.
  • Лічильники й стани всередині мікросервісів.
  • Швидкий доступ до окремих полів без завантаження всього об'єкта.

Приклад використання як кеш

bash
HSET product:42 name "Phone" price "899" stock "24" HGET product:42 price

Результат:

javascript
"899"

Так хеш може представляти рядок даних з таблиці SQL у пам'яті Redis.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.