controller.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. # -*- coding: utf-8 -*-
  2. from fastapi import APIRouter, Depends
  3. from fastapi.responses import JSONResponse
  4. from redis.asyncio.client import Redis
  5. from app.common.response import SuccessResponse
  6. from app.core.exceptions import CustomException
  7. from app.core.dependencies import AuthPermission, redis_getter
  8. from app.core.logger import log
  9. from app.core.router_class import OperationLogRoute
  10. from .service import CacheService
  11. CacheRouter = APIRouter(route_class=OperationLogRoute, prefix="/cache", tags=["缓存监控"])
  12. @CacheRouter.get(
  13. '/info',
  14. dependencies=[Depends(AuthPermission(['module_monitor:cache:query']))],
  15. summary="获取缓存监控信息",
  16. description="获取缓存监控信息"
  17. )
  18. async def get_monitor_cache_info_controller(
  19. redis: Redis = Depends(redis_getter)
  20. ) -> JSONResponse:
  21. """
  22. 获取缓存监控统计信息
  23. 返回:
  24. - JSONResponse: 包含缓存监控统计信息的JSON响应
  25. """
  26. result = await CacheService.get_cache_monitor_statistical_info_service(redis=redis)
  27. log.info('获取缓存监控信息成功')
  28. return SuccessResponse(data=result, msg='获取缓存监控信息成功')
  29. @CacheRouter.get(
  30. '/get/names',
  31. dependencies=[Depends(AuthPermission(['module_monitor:cache:query']))],
  32. summary="获取缓存名称列表",
  33. description="获取缓存名称列表"
  34. )
  35. async def get_monitor_cache_name_controller() -> JSONResponse:
  36. """
  37. 获取缓存名称列表
  38. 返回:
  39. - JSONResponse: 包含缓存名称列表的JSON响应
  40. """
  41. result = await CacheService.get_cache_monitor_cache_name_service()
  42. log.info('获取缓存名称列表成功')
  43. return SuccessResponse(data=result, msg='获取缓存名称列表成功')
  44. @CacheRouter.get(
  45. '/get/keys/{cache_name}',
  46. dependencies=[Depends(AuthPermission(['module_monitor:cache:query']))],
  47. summary="获取缓存键名列表",
  48. description="获取缓存键名列表"
  49. )
  50. async def get_monitor_cache_key_controller(
  51. cache_name: str,
  52. redis: Redis = Depends(redis_getter)
  53. ) -> JSONResponse:
  54. """
  55. 获取指定缓存名称下的键名列表
  56. 参数:
  57. - cache_name (str): 缓存名称
  58. 返回:
  59. - JSONResponse: 包含缓存键名列表的JSON响应
  60. """
  61. result = await CacheService.get_cache_monitor_cache_key_service(redis=redis, cache_name=cache_name)
  62. log.info(f'获取缓存{cache_name}的键名列表成功')
  63. return SuccessResponse(data=result, msg=f'获取缓存{cache_name}的键名列表成功')
  64. @CacheRouter.get(
  65. '/get/value/{cache_name}/{cache_key}',
  66. dependencies=[Depends(AuthPermission(['module_monitor:cache:query']))],
  67. summary="获取缓存值",
  68. description="获取缓存值"
  69. )
  70. async def get_monitor_cache_value_controller(
  71. cache_name: str,
  72. cache_key: str,
  73. redis: Redis = Depends(redis_getter)
  74. )-> JSONResponse:
  75. """
  76. 获取指定缓存键的值
  77. 参数:
  78. - cache_name (str): 缓存名称
  79. - cache_key (str): 缓存键
  80. 返回:
  81. - JSONResponse: 包含缓存值的JSON响应
  82. """
  83. result = await CacheService.get_cache_monitor_cache_value_service(redis=redis, cache_name=cache_name, cache_key=cache_key)
  84. log.info(f'获取缓存{cache_name}:{cache_key}的值成功')
  85. return SuccessResponse(data=result, msg=f'获取缓存{cache_name}:{cache_key}的值成功')
  86. @CacheRouter.delete(
  87. '/delete/name/{cache_name}',
  88. dependencies=[Depends(AuthPermission(['module_monitor:cache:delete']))],
  89. summary="清除指定缓存名称的所有缓存",
  90. description="清除指定缓存名称的所有缓存"
  91. )
  92. async def clear_monitor_cache_name_controller(
  93. cache_name: str,
  94. redis: Redis = Depends(redis_getter)
  95. ) -> JSONResponse:
  96. """
  97. 清除指定缓存名称下的所有缓存
  98. 参数:
  99. - cache_name (str): 缓存名称
  100. 返回:
  101. - JSONResponse: 包含清除结果的JSON响应
  102. """
  103. result = await CacheService.clear_cache_monitor_cache_name_service(redis=redis, cache_name=cache_name)
  104. if not result:
  105. raise CustomException(msg='清除缓存失败', data=result)
  106. log.info(f'清除缓存{cache_name}成功')
  107. return SuccessResponse(msg=f'{cache_name}对应键值清除成功', data=result)
  108. @CacheRouter.delete(
  109. '/delete/key/{cache_key}',
  110. dependencies=[Depends(AuthPermission(['module_monitor:cache:delete']))],
  111. summary="清除指定缓存键",
  112. description="清除指定缓存键"
  113. )
  114. async def clear_monitor_cache_key_controller(
  115. cache_key: str,
  116. redis: Redis = Depends(redis_getter)
  117. ) -> JSONResponse:
  118. """
  119. 清除指定缓存键
  120. 参数:
  121. - cache_key (str): 缓存键
  122. 返回:
  123. - JSONResponse: 包含清除结果的JSON响应
  124. """
  125. result = await CacheService.clear_cache_monitor_cache_key_service(redis=redis, cache_key=cache_key)
  126. if not result:
  127. raise CustomException(msg='清除缓存失败', data=result)
  128. log.info(f'清除缓存键{cache_key}成功')
  129. return SuccessResponse(msg=f'{cache_key}清除成功', data=result)
  130. @CacheRouter.delete(
  131. '/delete/all',
  132. dependencies=[Depends(AuthPermission(['module_monitor:cache:delete']))],
  133. summary="清除所有缓存",
  134. description="清除所有缓存"
  135. )
  136. async def clear_monitor_cache_all_controller(
  137. redis: Redis = Depends(redis_getter)
  138. ) -> JSONResponse:
  139. """
  140. 清除所有缓存
  141. 返回:
  142. - JSONResponse: 包含清除结果的JSON响应
  143. """
  144. result = await CacheService.clear_cache_monitor_all_service(redis=redis)
  145. if not result:
  146. raise CustomException(msg='清除缓存失败', data=result)
  147. log.info('清除所有缓存成功')
  148. return SuccessResponse(msg='所有缓存清除成功', data=result)