feat(backend): 清空数据功能增加 Redis 支持

- 在清除所有数据操作中增加 Redis 数据清空步骤
- 新增 RedisManager.clear_all_data 方法实现 Redis 数据清空
- 优化清除数据后的消息提示,区分数据库和 Redis 清空情况
- 移除不必要的日志信息,简化代码
This commit is contained in:
danial
2025-09-18 00:19:08 +08:00
parent c733a47229
commit 501c045971
4 changed files with 41 additions and 7 deletions

View File

@@ -249,12 +249,25 @@ async def clear_all_data(
# 提交事务
await db.commit()
# 清空Redis数据
redis_deleted = 0
try:
redis_deleted = await redis_manager.clear_all_data()
logger.info("Redis数据清空完成")
except Exception as redis_error:
logger.error(f"清空Redis数据失败: {redis_error}")
# Redis清空失败不影响数据库操作的提交
total_deleted = sum(deleted_tables.values())
message = (
f"成功删除 {total_deleted} 条数据记录"
if total_deleted > 0
else "数据库已为空,无需删除"
)
if total_deleted > 0 and redis_deleted > 0:
message = f"成功删除数据库 {total_deleted} 条记录,清空 Redis {redis_deleted} 个键"
elif total_deleted > 0:
message = f"成功删除数据库 {total_deleted} 条记录Redis 无需清空"
elif redis_deleted > 0:
message = f"数据库已为空,成功清空 Redis {redis_deleted} 个键"
else:
message = "数据库和Redis均为空无需删除"
return DeleteAllDataResponse(
success=True,

View File

@@ -134,7 +134,6 @@ async def get_user_data_list(
country=country,
name_pattern=name_pattern,
)
logger.info(f"获取用户数据列表成功: page={page}, size={size}")
return result
except Exception as e:
logger.error(f"获取用户数据列表失败: {str(e)}", exc_info=True)

View File

@@ -345,6 +345,29 @@ class RedisManager:
logger.error(f"获取user_data_id失败: {e}")
return None
async def clear_all_data(self) -> int:
"""清空所有Redis数据"""
try:
redis_client = await self.get_redis()
# 获取所有键
all_keys = await redis_client.keys("*")
total_keys = len(all_keys)
if total_keys == 0:
logger.info("Redis已为空无需清空")
return 0
# 删除所有键
deleted_count = await redis_client.delete(*all_keys)
logger.info(f"已清空Redis数据: 删除 {deleted_count} 个键")
return deleted_count
except Exception as e:
logger.error(f"清空Redis数据失败: {e}")
raise
# 创建全局单例实例
redis_manager = RedisManager()

View File

@@ -92,7 +92,6 @@ class TaskService:
task_list.append(task_item)
logger.info(f"获取任务列表成功,共{len(task_list)}个任务")
return TaskListResponse(
success=True,
tasks=task_list,