Source code for fragmented_keys.cache_handler.redis_handler

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from redis import Redis


[docs] class RedisHandler: """Redis cache handler.""" def __init__(self, client: Redis) -> None: self._client = client
[docs] def group_name(self) -> str: return "RedisHandler"
[docs] def get(self, key: str) -> str | None: val = self._client.get(key) if val is None: return None return val if isinstance(val, str) else val.decode("utf-8")
[docs] def set(self, key: str, value: str, ttl: int | None = None) -> None: if ttl is not None: self._client.setex(key, ttl, value) else: self._client.set(key, value)
[docs] def get_multi(self, keys: list[str]) -> dict[str, str]: if not keys: return {} values = self._client.mget(keys) result: dict[str, str] = {} for k, v in zip(keys, values): if v is not None: result[k] = v if isinstance(v, str) else v.decode("utf-8") return result