Files

40 lines
1.1 KiB
Python
Raw Permalink Normal View History

2026-01-30 17:47:21 +08:00
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"]