import json import redis.asyncio as redis_async class Cache: def __init__(self, options): if isinstance(options, str): self.redis = redis_async.from_url(options, decode_responses=True) elif isinstance(options, dict): host = options.get("host", "localhost") port = options.get("port", 6379) db = options.get("db", 0) password = options.get("password") if password: url = f"redis://:{password}@{host}:{port}/{db}" else: url = f"redis://{host}:{port}/{db}" self.redis = redis_async.from_url(url, decode_responses=True) else: raise TypeError("options must be dict or redis url string") async def set(self, key, value): try: await self.redis.set(key, value) except Exception as err: raise err async def get(self, key): try: data = await self.redis.get(key) return json.loads(data) except Exception as err: raise err __all__ = ["Cache"]