astock-agent/backend/app/data/cache.py
2026-04-07 20:51:00 +08:00

37 lines
871 B
Python

"""内存缓存,支持 TTL 过期"""
import time
from typing import Any
class MemoryCache:
def __init__(self):
self._store: dict[str, tuple[Any, float]] = {}
def get(self, key: str) -> Any | None:
if key not in self._store:
return None
value, expire_at = self._store[key]
if time.time() > expire_at:
del self._store[key]
return None
return value
def set(self, key: str, value: Any, ttl: int = 300):
self._store[key] = (value, time.time() + ttl)
def delete(self, key: str):
self._store.pop(key, None)
def clear(self):
self._store.clear()
def cleanup(self):
now = time.time()
expired = [k for k, (_, exp) in self._store.items() if now > exp]
for k in expired:
del self._store[k]
cache = MemoryCache()