remote_cache.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # mypy: allow-untyped-defs
  2. import os
  3. from abc import abstractmethod
  4. class RemoteCacheBackend:
  5. """
  6. A backend implementation for accessing a remote/distributed cache.
  7. """
  8. def __init__(self, cache_id: str):
  9. pass
  10. @abstractmethod
  11. def get(self, key: str):
  12. pass
  13. @abstractmethod
  14. def put(self, key: str, data: bytes):
  15. pass
  16. class RedisRemoteCacheBackend(RemoteCacheBackend):
  17. """
  18. A Redis implementation of a remote/distributed cache.
  19. """
  20. def __init__(self, cache_id: str):
  21. import redis
  22. self._key_fmt = f"pt2:{cache_id}:{{key}}"
  23. self._redis = redis.Redis(
  24. host=os.environ.get("TORCHINDUCTOR_REDIS_HOST", "localhost"),
  25. port=int(os.environ.get("TORCHINDUCTOR_REDIS_PORT", 6379)),
  26. )
  27. def _get_key(self, key: str) -> str:
  28. return self._key_fmt.format(key=key)
  29. def get(self, key: str):
  30. return self._redis.get(self._get_key(key))
  31. def put(self, key: str, data: bytes):
  32. return self._redis.set(self._get_key(key), data)