redis_info.py 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from database.db_redis import redis_client
  4. from utils.server_info import server_info
  5. class RedisInfo:
  6. @staticmethod
  7. async def get_info():
  8. info = await redis_client.info()
  9. fmt_info = {}
  10. for key, value in info.items():
  11. if isinstance(value, dict):
  12. value = ','.join({f'{k}={v}' for k, v in value.items()})
  13. else:
  14. value = str(value)
  15. fmt_info[key] = value
  16. db_size = await redis_client.dbsize()
  17. fmt_info.update({'keys_num': db_size})
  18. fmt_uptime = server_info.fmt_seconds(fmt_info.get('uptime_in_seconds', 0))
  19. fmt_info.update({'uptime_in_seconds': fmt_uptime})
  20. return fmt_info
  21. @staticmethod
  22. async def get_stats():
  23. stats_list = []
  24. command_stats = await redis_client.info('commandstats')
  25. for k, v in command_stats.items():
  26. stats_list.append({'name': k.split('_')[-1], 'value': str(v.get('calls', ''))})
  27. return stats_list
  28. redis_info = RedisInfo()