fix cache Singleton

This commit is contained in:
jxxghp
2025-08-21 21:45:34 +08:00
parent bcd560d74e
commit 1c73c92bfd
+6 -5
View File
@@ -16,6 +16,7 @@ from cachetools.keys import hashkey
from app.core.config import settings from app.core.config import settings
from app.helper.redis import RedisHelper, AsyncRedisHelper from app.helper.redis import RedisHelper, AsyncRedisHelper
from app.log import logger from app.log import logger
from app.utils.singleton import Singleton
# 默认缓存区 # 默认缓存区
DEFAULT_CACHE_REGION = "DEFAULT" DEFAULT_CACHE_REGION = "DEFAULT"
@@ -23,7 +24,7 @@ DEFAULT_CACHE_REGION = "DEFAULT"
lock = threading.Lock() lock = threading.Lock()
class CacheBackend(ABC): class CacheBackend(ABC, metaclass=Singleton):
""" """
缓存后端基类,定义通用的缓存接口 缓存后端基类,定义通用的缓存接口
""" """
@@ -136,7 +137,7 @@ class CacheBackend(ABC):
return settings.CACHE_BACKEND_TYPE == "redis" return settings.CACHE_BACKEND_TYPE == "redis"
class AsyncCacheBackend(ABC): class AsyncCacheBackend(ABC, metaclass=Singleton):
""" """
缓存后端基类,定义通用的缓存接口(异步) 缓存后端基类,定义通用的缓存接口(异步)
""" """
@@ -789,15 +790,15 @@ def Cache(maxsize: Optional[int] = None, ttl: Optional[int] = None) -> CacheBack
""" """
根据配置获取缓存后端实例(内存或Redis),maxsize仅在未启用Redis时生效 根据配置获取缓存后端实例(内存或Redis),maxsize仅在未启用Redis时生效
:param maxsize: 缓存的最大条目数,仅使用cachetools时生效,不传入默认1024 :param maxsize: 缓存的最大条目数,仅使用cachetools时生效
:param ttl: 缓存的默认存活时间,单位秒 :param ttl: 缓存的默认存活时间,单位秒
:return: 返回缓存后端实例 :return: 返回缓存后端实例
""" """
if settings.CACHE_BACKEND_TYPE == "redis": if settings.CACHE_BACKEND_TYPE == "redis":
return RedisBackend(ttl=ttl) return RedisBackend(ttl=ttl)
else: else:
# 使用内存缓存,maxsize需要有值,默认1024 # 使用内存缓存,maxsize需要有值
return MemoryBackend(maxsize=maxsize or 1024, ttl=ttl) return MemoryBackend(maxsize=maxsize, ttl=ttl)
class TTLCache: class TTLCache: