23 lines
601 B
Python
23 lines
601 B
Python
from json import dumps, loads
|
|
from typing import List, Optional
|
|
|
|
from pynyaata.cache import CACHE_TIMEOUT, REDIS_URL
|
|
from pynyaata.types import Cache, RemoteFile
|
|
|
|
from redis import ConnectionError, Redis
|
|
|
|
|
|
if not REDIS_URL:
|
|
raise ConnectionError(f"Invalid REDIS_URL: {REDIS_URL}")
|
|
|
|
client = Redis.from_url(REDIS_URL)
|
|
|
|
|
|
class RedisCache(Cache):
|
|
def get(self, key: str) -> Optional[List[RemoteFile]]:
|
|
data = client.get(key)
|
|
return loads(str(data)) if data else None
|
|
|
|
def set(self, key: str, data: List[RemoteFile]):
|
|
return client.set(key, dumps(data), CACHE_TIMEOUT)
|