feat: 将 api_token 改为使用redis快速存取

This commit is contained in:
martsforever
2025-09-27 21:21:00 +08:00
parent 4311f521a7
commit 10f606bd15
+12 -9
View File
@@ -1,5 +1,7 @@
from enum import Enum from enum import Enum
from app.utils.redis_utils import redis_utils, remove_redis_cache
class ApiSecretStatus(Enum): class ApiSecretStatus(Enum):
valid = "valid" # 秘钥有效 valid = "valid" # 秘钥有效
@@ -13,22 +15,23 @@ class ApiSecretUtils():
# 验证秘钥状态 # 验证秘钥状态
async def verify_secret(self, secret: str) -> ApiSecretStatus: async def verify_secret(self, secret: str) -> ApiSecretStatus:
api_secret_status = self.cache.get(secret, None) async with redis_utils.get_redis_connection() as redis_client:
print("verify_secret", self.cache) cache_value = await redis_client.get(f"api_secret_status_${secret}")
print("cache_value", cache_value)
api_secret_status = cache_value
print("verify_secret", api_secret_status, secret)
return api_secret_status or ApiSecretStatus.not_exist return api_secret_status or ApiSecretStatus.not_exist
# 保存秘钥状态 # 保存秘钥状态
async def save_secret(self, secret: str, status: ApiSecretStatus): async def save_secret(self, secret: str, status: ApiSecretStatus):
print("save_secret", self.cache) print("save_secret", secret)
self.cache[secret] = status async with redis_utils.get_redis_connection() as redis_client:
await redis_client.set(f"api_secret_status_${secret}", str(status))
# 移除秘钥缓存 # 移除秘钥缓存
async def remove_secret(self, secret: str): async def remove_secret(self, secret: str):
# self.cache.pop(secret, None) await remove_redis_cache(f"api_secret_status_${secret}")
if secret in self.cache:
del self.cache[secret]
print("remove_secret", secret)
print(await self.verify_secret(secret))
api_secret_utils = ApiSecretUtils() api_secret_utils = ApiSecretUtils()