| |
| 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) |
|
|