Middle
42
Kā neitaut kešatmiņu, lai tā neaugtu bezgalīgi? Kā pievienot TTL (dzīves ilgumu)?
Uzņēmumi, kur jautāja
Atbilde no 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.