mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
cache格式化
This commit is contained in:
parent
e346c2c9b4
commit
9f4a727539
@ -6,6 +6,7 @@ from typing import Any, ClassVar, Generic, TypeVar
|
|||||||
|
|
||||||
import nonebot
|
import nonebot
|
||||||
from aiocache import Cache as AioCache
|
from aiocache import Cache as AioCache
|
||||||
|
# from aiocache.backends.redis import RedisCache
|
||||||
from aiocache.base import BaseCache
|
from aiocache.base import BaseCache
|
||||||
from aiocache.serializers import JsonSerializer
|
from aiocache.serializers import JsonSerializer
|
||||||
from nonebot.compat import model_dump
|
from nonebot.compat import model_dump
|
||||||
@ -205,7 +206,7 @@ class CacheData(BaseModel):
|
|||||||
async def get_data(self) -> Any:
|
async def get_data(self) -> Any:
|
||||||
"""从缓存获取数据"""
|
"""从缓存获取数据"""
|
||||||
try:
|
try:
|
||||||
data = await self._cache.get(self.name) #type:ignore
|
data = await self._cache.get(self.name)
|
||||||
logger.debug(f"获取缓存 {self.name} 数据: {data}")
|
logger.debug(f"获取缓存 {self.name} 数据: {data}")
|
||||||
|
|
||||||
# 如果数据为空,尝试重新加载
|
# 如果数据为空,尝试重新加载
|
||||||
@ -304,11 +305,11 @@ class CacheData(BaseModel):
|
|||||||
logger.debug(f"设置缓存 {self.name} 序列化后数据: {serialized_value}")
|
logger.debug(f"设置缓存 {self.name} 序列化后数据: {serialized_value}")
|
||||||
|
|
||||||
# 2. 删除旧数据
|
# 2. 删除旧数据
|
||||||
await self._cache.delete(self.name) #type:ignore
|
await self._cache.delete(self.name)
|
||||||
logger.debug(f"删除缓存 {self.name} 旧数据")
|
logger.debug(f"删除缓存 {self.name} 旧数据")
|
||||||
|
|
||||||
# 3. 设置新数据
|
# 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} 新数据完成")
|
logger.debug(f"设置缓存 {self.name} 新数据完成")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -318,7 +319,7 @@ class CacheData(BaseModel):
|
|||||||
async def delete_data(self):
|
async def delete_data(self):
|
||||||
"""删除缓存数据"""
|
"""删除缓存数据"""
|
||||||
try:
|
try:
|
||||||
await self._cache.delete(self.name) #type:ignore
|
await self._cache.delete(self.name)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"删除缓存 {self.name}", e=e)
|
logger.error(f"删除缓存 {self.name}", e=e)
|
||||||
|
|
||||||
@ -425,7 +426,7 @@ class CacheData(BaseModel):
|
|||||||
"""
|
"""
|
||||||
cache_key = self._get_cache_key(key)
|
cache_key = self._get_cache_key(key)
|
||||||
try:
|
try:
|
||||||
data = await self._cache.get(cache_key) #type:ignore
|
data = await self._cache.get(cache_key)
|
||||||
logger.debug(f"获取缓存 {cache_key} 数据: {data}")
|
logger.debug(f"获取缓存 {cache_key} 数据: {data}")
|
||||||
|
|
||||||
if self.result_model:
|
if self.result_model:
|
||||||
@ -464,7 +465,7 @@ class CacheData(BaseModel):
|
|||||||
for key in self._keys:
|
for key in self._keys:
|
||||||
# 提取原始键名(去掉前缀)
|
# 提取原始键名(去掉前缀)
|
||||||
original_key = key.split(":", 1)[1]
|
original_key = key.split(":", 1)[1]
|
||||||
data = await self._cache.get(key) #type:ignore
|
data = await self._cache.get(key)
|
||||||
if self.result_model:
|
if self.result_model:
|
||||||
result[original_key] = self._deserialize_value(
|
result[original_key] = self._deserialize_value(
|
||||||
data, self.result_model
|
data, self.result_model
|
||||||
@ -481,7 +482,7 @@ class CacheData(BaseModel):
|
|||||||
cache_key = self._get_cache_key(key)
|
cache_key = self._get_cache_key(key)
|
||||||
try:
|
try:
|
||||||
serialized_value = self._serialize_value(value)
|
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) # 添加到键列表
|
self._keys.add(cache_key) # 添加到键列表
|
||||||
logger.debug(f"设置缓存 {cache_key} 数据完成")
|
logger.debug(f"设置缓存 {cache_key} 数据完成")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -492,7 +493,7 @@ class CacheData(BaseModel):
|
|||||||
"""删除指定键的缓存数据"""
|
"""删除指定键的缓存数据"""
|
||||||
cache_key = self._get_cache_key(key)
|
cache_key = self._get_cache_key(key)
|
||||||
try:
|
try:
|
||||||
await self._cache.delete(cache_key) #type:ignore
|
await self._cache.delete(cache_key)
|
||||||
self._keys.discard(cache_key) # 从键列表中移除
|
self._keys.discard(cache_key) # 从键列表中移除
|
||||||
logger.debug(f"删除缓存 {cache_key} 完成")
|
logger.debug(f"删除缓存 {cache_key} 完成")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -502,7 +503,7 @@ class CacheData(BaseModel):
|
|||||||
"""清除所有缓存数据"""
|
"""清除所有缓存数据"""
|
||||||
try:
|
try:
|
||||||
for key in list(self._keys): # 使用列表复制避免在迭代时修改
|
for key in list(self._keys): # 使用列表复制避免在迭代时修改
|
||||||
await self._cache.delete(key) #type:ignore
|
await self._cache.delete(key)
|
||||||
self._keys.clear()
|
self._keys.clear()
|
||||||
logger.debug(f"清除缓存 {self.name} 完成")
|
logger.debug(f"清除缓存 {self.name} 完成")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -521,7 +522,7 @@ class CacheManager:
|
|||||||
if self._cache_instance is None:
|
if self._cache_instance is None:
|
||||||
if config.redis_host:
|
if config.redis_host:
|
||||||
self._cache_instance = AioCache(
|
self._cache_instance = AioCache(
|
||||||
AioCache.REDIS, # type: ignore
|
AioCache.REDIS,
|
||||||
serializer=JsonSerializer(),
|
serializer=JsonSerializer(),
|
||||||
namespace="zhenxun_cache",
|
namespace="zhenxun_cache",
|
||||||
timeout=30, # 操作超时时间
|
timeout=30, # 操作超时时间
|
||||||
@ -543,12 +544,12 @@ class CacheManager:
|
|||||||
|
|
||||||
async def close(self):
|
async def close(self):
|
||||||
if self._cache_instance:
|
if self._cache_instance:
|
||||||
await self._cache_instance.close() #type:ignore
|
await self._cache_instance.close()
|
||||||
|
|
||||||
async def verify_connection(self):
|
async def verify_connection(self):
|
||||||
"""连接测试"""
|
"""连接测试"""
|
||||||
try:
|
try:
|
||||||
await self._cache.get("__test__") #type:ignore
|
await self._cache.get("__test__")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error("连接失败", LOG_COMMAND, e=e)
|
logger.error("连接失败", LOG_COMMAND, e=e)
|
||||||
raise
|
raise
|
||||||
@ -584,7 +585,7 @@ class CacheManager:
|
|||||||
func=func,
|
func=func,
|
||||||
expire=expire,
|
expire=expire,
|
||||||
lazy_load=lazy_load,
|
lazy_load=lazy_load,
|
||||||
_cache=self._cache, # type: ignore
|
_cache=self._cache,
|
||||||
)
|
)
|
||||||
return func
|
return func
|
||||||
|
|
||||||
@ -695,4 +696,4 @@ class Cache(Generic[T]):
|
|||||||
|
|
||||||
@driver.on_shutdown
|
@driver.on_shutdown
|
||||||
async def _():
|
async def _():
|
||||||
await CacheRoot.close()
|
await CacheRoot.close()
|
||||||
Loading…
Reference in New Issue
Block a user