keys.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. class RedisKeyBuilder:
  2. def __init__(self, prefix: str) -> None:
  3. if not prefix.endswith(":"):
  4. raise ValueError("Redis Key 前缀必须以冒号结尾")
  5. self._prefix = prefix
  6. def auth_otp(self, mobile_hash: str) -> str:
  7. return self._key("auth", "otp", mobile_hash)
  8. def auth_session(self, session_id: str) -> str:
  9. return self._key("auth", "session", session_id)
  10. def auth_refresh(self, jti_hash: str) -> str:
  11. return self._key("auth", "refresh", jti_hash)
  12. def login_rate(self, subject_hash: str) -> str:
  13. return self._key("rate", "login", subject_hash)
  14. def agent_rate(self, subject_id: str) -> str:
  15. return self._key("rate", "agent", subject_id)
  16. def agent_thread_hot(self, thread_id: str) -> str:
  17. return self._key("agent", "thread", thread_id, "hot")
  18. def agent_run_events(self, run_id: str) -> str:
  19. return self._key("agent", "run", run_id, "events")
  20. def agent_run_cancel(self, run_id: str) -> str:
  21. return self._key("agent", "run", run_id, "cancel")
  22. def payment_lock(self, payment_id: str) -> str:
  23. return self._key("lock", "payment", payment_id)
  24. def issue_lock(self, order_id: str) -> str:
  25. return self._key("lock", "issue", order_id)
  26. def product_cache(self, scope_hash: str) -> str:
  27. return self._key("cache", "product", "available", scope_hash)
  28. def metrics_cache(self, metric_hash: str) -> str:
  29. return self._key("cache", "metrics", metric_hash)
  30. def worker_wakeup(self, queue: str) -> str:
  31. return self._key("worker", "wakeup", queue)
  32. def _key(self, *segments: str) -> str:
  33. for segment in segments:
  34. if not segment or ":" in segment:
  35. raise ValueError("Redis Key 片段不能为空或包含冒号")
  36. return self._prefix + ":".join(segments)