redis_utils.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import json
  2. from foundation.logger.loggering import server_logger
  3. from foundation.base.redis_connection import RedisConnectionFactory
  4. from foundation.base.config import config_handler
  5. # 缓存数据有效期 默认 3 分钟
  6. CACHE_DATA_EXPIRED_TIME = 3 * 60
  7. async def set_redis_result_cache_data(data_type: str , trace_id: str, value: str):
  8. """
  9. 设置redis结果缓存数据
  10. @param data_type: 数据类型,基本信息 cattle_info、体温信息 cattle_temperature 、步数信息 cattle_walk
  11. @param trace_id: 链路跟踪ID
  12. @param value: 缓存数据
  13. """
  14. expired_time = config_handler.get("api", "CACHE_DATA_EXPIRED_TIME" , CACHE_DATA_EXPIRED_TIME)
  15. key = f"{trace_id}:{data_type}"
  16. # 直接获取 RedisStore
  17. redis_store = await RedisConnectionFactory.get_redis_store()
  18. await redis_store.set(key, value , ex=expired_time)
  19. async def get_redis_result_cache_data(data_type: str , trace_id: str):
  20. """
  21. 获取redis结果缓存数据
  22. @param data_type: 数据类型,基本信息 cattle_info、体温信息 cattle_temperature 、步数信息 cattle_walk
  23. @param trace_id: 链路跟踪ID
  24. """
  25. key = f"{trace_id}:{data_type}"
  26. # 直接获取 RedisStore
  27. redis_store = await RedisConnectionFactory.get_redis_store()
  28. value = await redis_store.get(key)
  29. return value
  30. async def get_redis_result_cache_data_and_delete_key(data_type: str , trace_id: str):
  31. """
  32. 获取redis结果缓存数据
  33. @param data_type: 数据类型,基本信息 cattle_info、体温信息 cattle_temperature 、步数信息 cattle_walk
  34. @param trace_id: 链路跟踪ID
  35. """
  36. key = f"{trace_id}:{data_type}"
  37. # 直接获取 RedisStore
  38. redis_store = await RedisConnectionFactory.get_redis_store()
  39. value = await redis_store.get(key)
  40. server_logger.info(f"获取redis结果缓存数据: {key}-{value}")
  41. if value is None:
  42. return None
  43. # 第一步:转成字符串(decode)
  44. json_str = value.decode('utf-8')
  45. # 第二步:解析 JSON
  46. data = json.loads(json_str)
  47. # 删除key
  48. #await redis_store.delete(key)
  49. return data