reset_cache.py 851 B

1234567891011121314151617181920212223242526272829303132
  1. from typing import Any, cast
  2. from redis import Redis
  3. from app.core.config import Settings
  4. def clear_project_cache(settings: Settings | None = None) -> int:
  5. resolved_settings = settings or Settings()
  6. client = Redis.from_url(resolved_settings.redis_url, decode_responses=True)
  7. deleted = 0
  8. cursor = 0
  9. while True:
  10. cursor, keys = cast(
  11. tuple[int, list[str]],
  12. client.scan(
  13. cursor=cursor,
  14. match=f"{resolved_settings.redis_prefix}*",
  15. count=500,
  16. ),
  17. )
  18. if keys:
  19. deleted += cast(Any, client.delete(*keys))
  20. if cursor == 0:
  21. break
  22. client.close()
  23. return deleted
  24. if __name__ == "__main__":
  25. count = clear_project_cache()
  26. print(f"已删除 {count} 个智保通第一阶段 Redis Key。")