diff options
| author | Adam Johnson <me@adamj.eu> | 2021-12-29 00:02:50 +0000 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-01-13 12:28:06 +0100 |
| commit | c6cb5a0277fce1b87a4b417002289c31f0ee44bc (patch) | |
| tree | 199397a62056d7aecb815c29cda758900fd38f69 | |
| parent | 08d8bccbf1b0764a0de68325569ee47da256e206 (diff) | |
Refs #29708 -- Stopped inheriting from PickleSerializer by RedisSerializer.
| -rw-r--r-- | django/core/cache/backends/redis.py | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/django/core/cache/backends/redis.py b/django/core/cache/backends/redis.py index ec2fb06102..f168e93737 100644 --- a/django/core/cache/backends/redis.py +++ b/django/core/cache/backends/redis.py @@ -1,31 +1,30 @@ """Redis cache backend.""" +import pickle import random import re from django.core.cache.backends.base import DEFAULT_TIMEOUT, BaseCache -from django.core.serializers.base import PickleSerializer from django.utils.functional import cached_property from django.utils.module_loading import import_string -class RedisSerializer(PickleSerializer): - """ - Similar to PickSerializer, except integers are serialized as native Redis - integers for better incr() and decr() atomicity. - """ +class RedisSerializer: + def __init__(self, protocol=None): + self.protocol = pickle.HIGHEST_PROTOCOL if protocol is None else protocol + def dumps(self, obj): # Only skip pickling for integers, a int subclasses as bool should be # pickled. if type(obj) is int: return obj - return super().dumps(obj) + return pickle.dumps(obj, self.protocol) def loads(self, data): try: return int(data) except ValueError: - return super().loads(data) + return pickle.loads(data) class RedisCacheClient: |
