Как выполняется инвалидация данных в кэше
Python
Senior
Без компании
Как выполняется инвалидация данных в кэше
Ответы
Инвалидация кэша — процесс удаления или обновления устаревших данных в кэше. Основные подходы:
- **По времени (TTL)** — автоматическое удаление после истечения срока жизни:
```
import redis
r = redis.Redis()
r.set('key', 'value', ex=60) # Удалится через 60 секунд
```
- **Явная инвалидация** — ручное удаление при изменении данных:
```
def update_user(user_id, data):
db.update_user(user_id, data)
cache.delete(f'user:{user_id}') # Удаляем старые данные
```
- **По событиям** — подписка на изменения (например, через pub/sub в Redis).
- **Паттерн "Write-through"** — обновление кэша одновременно с БД.
- **Паттерн "Cache-aside"** — при чтении сначала проверяем кэш, если нет — грузим из БД.
Ключевые моменты:
- Баланс между актуальностью данных и нагрузкой
- Учет race condition при конкурентных операциях
- Выбор стратегии зависит от требований к данным