Skip to main content

Як Redis використовує пам'ять?

Redis використовує пам'ять як основне робоче сховище - усі дані, ключі, структури та індекси перебувають в оперативній пам'яті (RAM). Це основа його швидкості, але й джерело обмежень.

Розберемо детально:

1. Усі дані живуть в оперативній пам'яті

Redis зберігає все: ключі, значення й метадані - прямо в RAM. Кожен ключ - це об'єкт у пам'яті, зазвичай представлений структурами на C (dict, sds та ін.).

Приклад: Якщо ти записуєш у Redis рядок "user:1" → "Alice", то обидва ці значення - і ключ, і саме значення - лежать в оперативній пам'яті.

Наслідок: операції виконуються за мікросекунди, але обсяг даних обмежений обсягом RAM.

2. Пам'ять керується динамічно

Redis використовує алокатор пам'яті (зазвичай jemalloc), який ефективно розподіляє RAM між структурами даних. Він намагається мінімізувати фрагментацію (розпорошення пам'яті на дрібні шматки).

Примітка: при довгій роботі й безлічі операцій виділення/звільнення пам'ять може фрагментуватися, через що фактичне використання RAM росте.

3. Обмеження пам'яті (maxmemory)

У redis.conf можна задати межу:

javascript
maxmemory 2gb

Коли Redis досягає цього ліміту, він починає видаляти старі дані за обраною політикою (LRU, LFU, TTL та ін.).

Приклад налаштувань:

javascript
maxmemory-policy allkeys-lru
  • видаляти найменш використовувані ключі.

Підсумок: Redis може "самоочищатися" як кеш, не падаючи при переповненні пам'яті.

4. Персистентність не впливає на оперативне сховище

Коли Redis зберігає дані на диск (dump.rdb, appendonly.aof), він створює копію з RAM, але основний стан все одно живе в пам'яті.

Роль диска: лише резервне копіювання, не оперативна робота.

5. Як Redis зберігає різні типи даних

Різні структури займають різну кількість пам'яті:

  • String - мінімум 50-100 байт на ключ/значення.
  • List і Set - використовують внутрішні структури (ziplist, hashtable).
  • Hash - може бути упакований компактно за малої кількості елементів.

Redis автоматично обирає оптимальну внутрішню структуру залежно від розміру даних.

6. Інструменти аналізу пам'яті

Redis має вбудовані команди:

  • INFO MEMORY - загальна статистика пам'яті.
  • MEMORY USAGE key - скільки пам'яті займає конкретний ключ.
  • MEMORY STATS - детальний розбір (фрагментація, allocator, overhead).

Підсумок

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

Головне:

  • Дані в RAM = миттєвий доступ.
  • Диск використовується лише для резервного збереження.
  • Ліміт пам'яті контролюється через maxmemory.

Redis - це, по суті, інтелектуальний менеджер оперативної пам'яті, що працює як база даних.

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

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

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