feat(cache): 添加自定义TTL支持和内存限制配置

This commit is contained in:
Windpicker-owo
2025-11-02 13:25:39 +08:00
parent 28ec9139de
commit 29a5357728
4 changed files with 162 additions and 20 deletions

View File

@@ -30,7 +30,7 @@ class DatabaseConfig(ValidatedConfigBase):
)
mysql_ssl_ca: str = Field(default="", description="SSL CA证书路径")
mysql_ssl_cert: str = Field(default="", description="SSL客户端证书路径")
mysql_ssl_key: str = Field(default="", description="SSL客户端密钥路径")
mysql_ssl_key: str = Field(default="", description="SSL密钥路径")
mysql_autocommit: bool = Field(default=True, description="自动提交事务")
mysql_sql_mode: str = Field(default="TRADITIONAL", description="SQL模式")
connection_pool_size: int = Field(default=10, ge=1, description="连接池大小")
@@ -41,6 +41,15 @@ class DatabaseConfig(ValidatedConfigBase):
default=True, description="是否启用批量保存动作记录(开启后将多个动作一次性写入数据库,提升性能)"
)
# 数据库缓存配置
enable_database_cache: bool = Field(default=True, description="是否启用数据库查询缓存系统")
cache_l1_max_size: int = Field(default=1000, ge=100, le=50000, description="L1缓存最大条目数热数据内存占用约1-5MB")
cache_l1_ttl: int = Field(default=60, ge=10, le=3600, description="L1缓存生存时间")
cache_l2_max_size: int = Field(default=10000, ge=1000, le=100000, description="L2缓存最大条目数温数据内存占用约10-50MB")
cache_l2_ttl: int = Field(default=300, ge=60, le=7200, description="L2缓存生存时间")
cache_cleanup_interval: int = Field(default=60, ge=30, le=600, description="缓存清理任务执行间隔(秒)")
cache_max_memory_mb: int = Field(default=100, ge=10, le=1000, description="缓存最大内存占用MB超过此值将触发强制清理")
class BotConfig(ValidatedConfigBase):
"""QQ机器人配置类"""