Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке Hash у Redis?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Hash у Redis - структура даних "ключ → значення" всередині одного ключа Redis: по суті міні-об'єкт чи словник, де під одним Redis-ключем можна зберігати кілька пар `поле:значення`, а значення - завжди рядки (Redis String). **Ключове:** внутрішньо зберігається як `ziplist` (мало коротких полів, до ~512, економить пам'ять) чи `hashtable` (багато даних чи довгі поля, швидкий доступ); підходить для профілів користувачів, налаштувань і кешування об'єктів з БД.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**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.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.