Check

Простой in-memory кэш с TTL

Python Senior Авито 01.01.2025
Реализуйте класс `TTLCache`, который хранит ключ-значение с временем жизни (TTL, seconds). Требования: 1. Метод `set(key, value, ttl_seconds)` — устанавливает значение. 2. Метод `get(key)` — возвращает значение или `None`, если ключ отсутствует или истёк по времени. Можно использовать модуль `time`.
Ответы
Решение 1
```python import time from typing import Any, Dict, Tuple class TTLCache: def __init__(self) -> None: # key -> (value, expire_ts) self._data: Dict[Any, Tuple[Any, float]] = {} def set(self, key: Any, value: Any, ttl_seconds: float) -> None: expire_at = time.time() + ttl_seconds self._data[key] = (value, expire_at) def get(self, key: Any) -> Any | None: item = self._data.get(key) if item is None: return None value, expire_at = item if time.time() > expire_at: self._data.pop(key, None) return None return value ```