summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Johnson <me@adamj.eu>2021-12-29 00:02:50 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-01-13 12:28:06 +0100
commitc6cb5a0277fce1b87a4b417002289c31f0ee44bc (patch)
tree199397a62056d7aecb815c29cda758900fd38f69
parent08d8bccbf1b0764a0de68325569ee47da256e206 (diff)
Refs #29708 -- Stopped inheriting from PickleSerializer by RedisSerializer.
-rw-r--r--django/core/cache/backends/redis.py15
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: