cache格式化

This commit is contained in:
ManyManyTomato 2025-07-05 10:45:59 +00:00
parent e346c2c9b4
commit 9f4a727539

View File

@ -6,6 +6,7 @@ from typing import Any, ClassVar, Generic, TypeVar
import nonebot
from aiocache import Cache as AioCache
# from aiocache.backends.redis import RedisCache
from aiocache.base import BaseCache
from aiocache.serializers import JsonSerializer
from nonebot.compat import model_dump
@ -205,7 +206,7 @@ class CacheData(BaseModel):
async def get_data(self) -> Any:
"""从缓存获取数据"""
try:
data = await self._cache.get(self.name) #type:ignore
data = await self._cache.get(self.name)
logger.debug(f"获取缓存 {self.name} 数据: {data}")
# 如果数据为空,尝试重新加载
@ -304,11 +305,11 @@ class CacheData(BaseModel):
logger.debug(f"设置缓存 {self.name} 序列化后数据: {serialized_value}")
# 2. 删除旧数据
await self._cache.delete(self.name) #type:ignore
await self._cache.delete(self.name)
logger.debug(f"删除缓存 {self.name} 旧数据")
# 3. 设置新数据
await self._cache.set(self.name, serialized_value, ttl=self.expire) #type:ignore
await self._cache.set(self.name, serialized_value, ttl=self.expire)
logger.debug(f"设置缓存 {self.name} 新数据完成")
except Exception as e:
@ -318,7 +319,7 @@ class CacheData(BaseModel):
async def delete_data(self):
"""删除缓存数据"""
try:
await self._cache.delete(self.name) #type:ignore
await self._cache.delete(self.name)
except Exception as e:
logger.error(f"删除缓存 {self.name}", e=e)
@ -425,7 +426,7 @@ class CacheData(BaseModel):
"""
cache_key = self._get_cache_key(key)
try:
data = await self._cache.get(cache_key) #type:ignore
data = await self._cache.get(cache_key)
logger.debug(f"获取缓存 {cache_key} 数据: {data}")
if self.result_model:
@ -464,7 +465,7 @@ class CacheData(BaseModel):
for key in self._keys:
# 提取原始键名(去掉前缀)
original_key = key.split(":", 1)[1]
data = await self._cache.get(key) #type:ignore
data = await self._cache.get(key)
if self.result_model:
result[original_key] = self._deserialize_value(
data, self.result_model
@ -481,7 +482,7 @@ class CacheData(BaseModel):
cache_key = self._get_cache_key(key)
try:
serialized_value = self._serialize_value(value)
await self._cache.set(cache_key, serialized_value, ttl=self.expire) #type:ignore
await self._cache.set(cache_key, serialized_value, ttl=self.expire)
self._keys.add(cache_key) # 添加到键列表
logger.debug(f"设置缓存 {cache_key} 数据完成")
except Exception as e:
@ -492,7 +493,7 @@ class CacheData(BaseModel):
"""删除指定键的缓存数据"""
cache_key = self._get_cache_key(key)
try:
await self._cache.delete(cache_key) #type:ignore
await self._cache.delete(cache_key)
self._keys.discard(cache_key) # 从键列表中移除
logger.debug(f"删除缓存 {cache_key} 完成")
except Exception as e:
@ -502,7 +503,7 @@ class CacheData(BaseModel):
"""清除所有缓存数据"""
try:
for key in list(self._keys): # 使用列表复制避免在迭代时修改
await self._cache.delete(key) #type:ignore
await self._cache.delete(key)
self._keys.clear()
logger.debug(f"清除缓存 {self.name} 完成")
except Exception as e:
@ -521,7 +522,7 @@ class CacheManager:
if self._cache_instance is None:
if config.redis_host:
self._cache_instance = AioCache(
AioCache.REDIS, # type: ignore
AioCache.REDIS,
serializer=JsonSerializer(),
namespace="zhenxun_cache",
timeout=30, # 操作超时时间
@ -543,12 +544,12 @@ class CacheManager:
async def close(self):
if self._cache_instance:
await self._cache_instance.close() #type:ignore
await self._cache_instance.close()
async def verify_connection(self):
"""连接测试"""
try:
await self._cache.get("__test__") #type:ignore
await self._cache.get("__test__")
except Exception as e:
logger.error("连接失败", LOG_COMMAND, e=e)
raise
@ -584,7 +585,7 @@ class CacheManager:
func=func,
expire=expire,
lazy_load=lazy_load,
_cache=self._cache, # type: ignore
_cache=self._cache,
)
return func