From 9fe493a12eb90e0ddea3547eba68968aad16137b Mon Sep 17 00:00:00 2001 From: MingxuanGame Date: Sat, 4 Oct 2025 07:35:58 +0000 Subject: [PATCH] refactor(cache): remove unused cache management and monitoring endpoints --- app/router/v2/cache.py | 140 ----------------------------------------- 1 file changed, 140 deletions(-) delete mode 100644 app/router/v2/cache.py diff --git a/app/router/v2/cache.py b/app/router/v2/cache.py deleted file mode 100644 index a75b593..0000000 --- a/app/router/v2/cache.py +++ /dev/null @@ -1,140 +0,0 @@ -""" -缓存管理和监控接口 -提供缓存统计、清理和预热功能 -""" - -from app.dependencies.database import Redis -from app.service.user_cache_service import get_user_cache_service - -from .router import router - -from fastapi import HTTPException -from pydantic import BaseModel - - -class CacheStatsResponse(BaseModel): - user_cache: dict - redis_info: dict - - -@router.get( - "/cache/stats", - response_model=CacheStatsResponse, - name="获取缓存统计信息", - description="获取用户缓存和Redis的统计信息,需要管理员权限。", - tags=["缓存管理"], -) -async def get_cache_stats( - redis: Redis, - # current_user: User = Security(get_current_user, scopes=["admin"]), # 暂时注释,可根据需要启用 -): - try: - cache_service = get_user_cache_service(redis) - user_cache_stats = await cache_service.get_cache_stats() - - # 获取 Redis 基本信息 - redis_info = await redis.info() - redis_stats = { - "connected_clients": redis_info.get("connected_clients", 0), - "used_memory_human": redis_info.get("used_memory_human", "0B"), - "used_memory_peak_human": redis_info.get("used_memory_peak_human", "0B"), - "total_commands_processed": redis_info.get("total_commands_processed", 0), - "keyspace_hits": redis_info.get("keyspace_hits", 0), - "keyspace_misses": redis_info.get("keyspace_misses", 0), - "evicted_keys": redis_info.get("evicted_keys", 0), - "expired_keys": redis_info.get("expired_keys", 0), - } - - # 计算缓存命中率 - hits = redis_stats["keyspace_hits"] - misses = redis_stats["keyspace_misses"] - hit_rate = hits / (hits + misses) * 100 if (hits + misses) > 0 else 0 - redis_stats["cache_hit_rate_percent"] = round(hit_rate, 2) - - return CacheStatsResponse(user_cache=user_cache_stats, redis_info=redis_stats) - - except Exception as e: - raise HTTPException(500, f"Failed to get cache stats: {e!s}") - - -@router.post( - "/cache/invalidate/{user_id}", - name="清除指定用户缓存", - description="清除指定用户的所有缓存数据,需要管理员权限。", - tags=["缓存管理"], -) -async def invalidate_user_cache( - user_id: int, - redis: Redis, - # current_user: User = Security(get_current_user, scopes=["admin"]), # 暂时注释 -): - try: - cache_service = get_user_cache_service(redis) - await cache_service.invalidate_user_cache(user_id) - await cache_service.invalidate_v1_user_cache(user_id) - return {"message": f"Cache invalidated for user {user_id}"} - except Exception as e: - raise HTTPException(500, f"Failed to invalidate cache: {e!s}") - - -@router.post( - "/cache/clear", - name="清除所有用户缓存", - description="清除所有用户相关的缓存数据,需要管理员权限。谨慎使用!", - tags=["缓存管理"], -) -async def clear_all_user_cache( - redis: Redis, - # current_user: User = Security(get_current_user, scopes=["admin"]), # 暂时注释 -): - try: - # 获取所有用户相关的缓存键 - user_keys = await redis.keys("user:*") - v1_user_keys = await redis.keys("v1_user:*") - all_keys = user_keys + v1_user_keys - - if all_keys: - await redis.delete(*all_keys) - return {"message": f"Cleared {len(all_keys)} cache entries"} - else: - return {"message": "No cache entries found"} - - except Exception as e: - raise HTTPException(500, f"Failed to clear cache: {e!s}") - - -class CacheWarmupRequest(BaseModel): - user_ids: list[int] | None = None - limit: int = 100 - - -@router.post( - "/cache/warmup", - name="缓存预热", - description="对指定用户或活跃用户进行缓存预热,需要管理员权限。", - tags=["缓存管理"], -) -async def warmup_cache( - request: CacheWarmupRequest, - redis: Redis, - # current_user: User = Security(get_current_user, scopes=["admin"]), # 暂时注释 -): - try: - cache_service = get_user_cache_service(redis) - - if request.user_ids: - # 预热指定用户 - from app.dependencies.database import with_db - - async with with_db() as session: - await cache_service.preload_user_cache(session, request.user_ids) - return {"message": f"Warmed up cache for {len(request.user_ids)} users"} - else: - # 预热活跃用户 - from app.tasks.cache import schedule_user_cache_preload_task - - await schedule_user_cache_preload_task() - return {"message": f"Warmed up cache for top {request.limit} active users"} - - except Exception as e: - raise HTTPException(500, f"Failed to warmup cache: {e!s}")