Middle
40
Кэшти кандайча жараксыз кылса болот, ал эми алгысыз өсүп кетпесин? TTL (өмүрү) кантип кошуу керек?
Кайсыл жерде компаниялар сурады
AIден жооп
sobes.tech AI
Чтобы кэш не разрастался бесконечно, нужно реализовать механизм инвалидирования устаревших данных и ограничение размера.
Как добавить TTL (time-to-live):
- При сохранении значения в кэш сохраняйте вместе с ним время истечения срока действия (например, текущее время + TTL).
- При получении значения проверяйте, не истёк ли срок действия. Если истёк — удаляйте элемент и возвращайте отсутствие значения.
Пример простого кэша с TTL на Python:
import time
class TTLCache:
def __init__(self, ttl_seconds):
self.ttl = ttl_seconds
self.store = {}
def set(self, key, value):
expire_at = time.time() + self.ttl
self.store[key] = (value, expire_at)
def get(self, key):
item = self.store.get(key)
if not item:
return None
value, expire_at = item
if time.time() > expire_at:
del self.store[key]
return None
return value
def cleanup(self):
now = time.time()
keys_to_delete = [k for k, (_, exp) in self.store.items() if exp <= now]
for k in keys_to_delete:
del self.store[k]
Как ограничить размер кэша:
- Используйте структуры данных с ограничением размера, например, LRU-кэш (Least Recently Used).
- При достижении максимального размера удаляйте наименее используемые элементы.
В Python для этого можно использовать functools.lru_cache или сторонние библиотеки, например cachetools.