35 lines
1.0 KiB
Python
35 lines
1.0 KiB
Python
import pickle
|
|
from logging import Logger
|
|
|
|
from redis.asyncio import Redis as RedisClient
|
|
|
|
from config import RedisConfig
|
|
|
|
|
|
class Redis:
|
|
def __init__(self, logger: Logger, config: RedisConfig, rootKeyName: str) -> None:
|
|
self.client: RedisClient = RedisClient(
|
|
host=config.host,
|
|
port=config.port,
|
|
password=config.password,
|
|
auto_close_connection_pool=False,
|
|
)
|
|
self.rootKeyName = rootKeyName
|
|
self.logger = logger
|
|
|
|
async def get(self, context: str, key: str):
|
|
self.logger.info(f"get value {key} from redis")
|
|
value = await self.client.get(f"{self.rootKeyName}:{context}:{key}")
|
|
if value:
|
|
return pickle.loads(value)
|
|
return None
|
|
|
|
async def set(self, context: str, key: str, value) -> None:
|
|
self.logger.info(f"set value {key} to redis")
|
|
await self.client.set(
|
|
f"{self.rootKeyName}:{context}:{key}", pickle.dumps(value)
|
|
)
|
|
|
|
async def close(self) -> None:
|
|
await self.client.close()
|