| | |
| | import pickle |
| | from abc import ABC, abstractmethod |
| | from typing import Any |
| |
|
| | import orjson |
| |
|
| |
|
| | class AbstractSerializer(ABC): |
| | @abstractmethod |
| | def serialize(self, obj: Any) -> Any: |
| | """Support for serializing objects stored in Redis.""" |
| |
|
| | @abstractmethod |
| | def deserialize(self, obj: Any) -> Any: |
| | """Support for deserializing objects stored in Redis.""" |
| |
|
| |
|
| | class PickleSerializer(AbstractSerializer): |
| | """Serialize values using pickle.""" |
| |
|
| | def serialize(self, obj: Any) -> bytes: |
| | return pickle.dumps(obj) |
| |
|
| | def deserialize(self, obj: bytes) -> Any: |
| | """Deserialize values using pickle.""" |
| | return pickle.loads(obj) |
| |
|
| |
|
| | class JSONSerializer(AbstractSerializer): |
| | """Serialize values using JSON.""" |
| |
|
| | def serialize(self, obj: Any) -> bytes: |
| | return orjson.dumps(obj) |
| |
|
| | def deserialize(self, obj: str) -> Any: |
| | """Deserialize values using JSON.""" |
| | return orjson.loads(obj) |
| |
|