memory_cache.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from typing import Optional, Dict, Any
  2. from .base_cache import BaseCache
  3. class MemoryCache(BaseCache):
  4. """基于内存的缓存实现"""
  5. def __init__(self):
  6. self._cache = {} # 现在存储结构为 {cache_name: {key: value}}
  7. async def get(self, cache_name: str, key: str) -> Optional[str]:
  8. """获取缓存值"""
  9. return self._cache.get(cache_name, {}).get(key)
  10. async def set(self, cache_name: str, key: str, value: str) -> None:
  11. """设置缓存值"""
  12. if cache_name not in self._cache:
  13. self._cache[cache_name] = {}
  14. self._cache[cache_name][key] = value
  15. async def get_dict(self, cache_name: str, key: str) -> Optional[Dict[str, Any]]:
  16. """获取字典类型缓存值
  17. Returns:
  18. Optional[Dict[str, Any]]: 返回指定的字典缓存,若不存在则返回None
  19. """
  20. value = self._cache.get(cache_name, {}).get(key)
  21. if isinstance(value, dict):
  22. return value
  23. return None
  24. async def set_dict(self, cache_name: str, key: str, value: Dict[str, Any]) -> None:
  25. """设置字典类型缓存值
  26. Args:
  27. cache_name: 缓存命名空间
  28. key: 缓存键
  29. value: 字典类型缓存值
  30. """
  31. if cache_name not in self._cache:
  32. self._cache[cache_name] = None
  33. self._cache[cache_name][key] = value
  34. async def delete(self, cache_name: str, key: str) -> None:
  35. """删除缓存"""
  36. if cache_name in self._cache and key in self._cache[cache_name]:
  37. del self._cache[cache_name][key]
  38. async def clear(self, cache_name: str, key: str = None) -> None:
  39. """清空指定缓存"""
  40. if cache_name in self._cache:
  41. if key:
  42. del self._cache[cache_name][key]
  43. else:
  44. del self._cache[cache_name]