Як Redis використовує пам'ять?
Redis використовує пам'ять як основне робоче сховище - усі дані, ключі, структури та індекси перебувають в оперативній пам'яті (RAM). Це основа його швидкості, але й джерело обмежень.
Розберемо детально:
1. Усі дані живуть в оперативній пам'яті
Redis зберігає все: ключі, значення й метадані - прямо в RAM. Кожен ключ - це об'єкт у пам'яті, зазвичай представлений структурами на C (dict, sds та ін.).
Приклад:
Якщо ти записуєш у Redis рядок "user:1" → "Alice",
то обидва ці значення - і ключ, і саме значення - лежать в оперативній пам'яті.
Наслідок: операції виконуються за мікросекунди, але обсяг даних обмежений обсягом RAM.
2. Пам'ять керується динамічно
Redis використовує алокатор пам'яті (зазвичай jemalloc),
який ефективно розподіляє RAM між структурами даних.
Він намагається мінімізувати фрагментацію (розпорошення пам'яті на дрібні шматки).
Примітка: при довгій роботі й безлічі операцій виділення/звільнення пам'ять може фрагментуватися, через що фактичне використання RAM росте.
3. Обмеження пам'яті (maxmemory)
У redis.conf можна задати межу:
maxmemory 2gbКоли Redis досягає цього ліміту, він починає видаляти старі дані за обраною політикою (LRU, LFU, TTL та ін.).
Приклад налаштувань:
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 - це, по суті, інтелектуальний менеджер оперативної пам'яті, що працює як база даних.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.