File size: 1,180 Bytes
83b4232
fab35c8
 
83b4232
 
fab35c8
 
 
 
 
 
83b4232
fab35c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83b4232
 
fab35c8
83b4232
fab35c8
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# backend/services/cache_manager.py
import time
from typing import Dict, Optional, Any

class CacheManager:
    """
    Gestionnaire de cache frugal en mémoire.
    Remplace Redis pour limiter les dépendances et la consommation de ressources.
    """
    _instance = None
    _cache: Dict[str, Dict[str, Any]] = {}

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super(CacheManager, cls).__new__(cls)
            print("Cache Manager local (in-memory) initialisé.")
        return cls._instance

    def get(self, key: str) -> Optional[Any]:
        """Récupère une valeur depuis le cache si elle n'est pas expirée."""
        if key in self._cache:
            item = self._cache[key]
            if item["expires"] > time.time():
                return item["value"]
            else:
                # Supprimer si expiré
                del self._cache[key]
        return None

    def set(self, key: str, value: Any, ttl: int = 3600):
        """Stocke une valeur dans le cache avec une durée de vie (ttl) en secondes."""
        self._cache[key] = {
            "value": value,
            "expires": time.time() + ttl
        }