为积分通胀策略增加Redis日缓存

1. 新增群积分通胀统计的Redis缓存键与按天过期策略,减少重复聚合查询。

2. 新增带缓存的群插件积分消耗统计方法,Redis异常时自动回退实时查询。

3. 调整积分消耗注解优先读取缓存版统计,降低高频群聊场景下的数据库压力。
This commit is contained in:
liuwei
2026-04-27 13:40:27 +08:00
parent 66ac0a7e89
commit 955c2f2797
2 changed files with 87 additions and 1 deletions

View File

@@ -76,7 +76,11 @@ def _resolve_points_cost_profile(plugin_instance: Any, message: Dict[str, Any],
try:
db_manager = DBConnectionManager.get_instance()
points_db = PointsDBOperator(db_manager)
stats = points_db.get_group_plugin_consumption_stats(roomid, lookback_hours)
# 通胀画像优先走 Redis 日缓存:
# 1. 同一个群在一天内会重复触发多次插件扣费;
# 2. 若每次都实时聚合,会对积分表和流水表造成额外压力;
# 3. 因此这里统一走“按天缓存”的统计入口,把数据库开销压到每天首次访问。
stats = points_db.get_group_plugin_consumption_stats_cached(roomid, lookback_hours)
profile["lookback_hours"] = lookback_hours
profile["spend_ratio"] = float(stats.get("plugin_spend_ratio") or 0.0)