diff --git a/django/core/cache/backends/redis.py b/django/core/cache/backends/redis.py index c370ff5cb70..eda8ac94579 100644 --- a/django/core/cache/backends/redis.py +++ b/django/core/cache/backends/redis.py @@ -130,7 +130,7 @@ class RedisCacheClient: return bool(client.exists(key)) def incr(self, key, delta): - client = self.get_client(key) + client = self.get_client(key, write=True) if not client.exists(key): raise ValueError("Key '%s' not found." % key) return client.incr(key, delta) diff --git a/tests/cache/tests.py b/tests/cache/tests.py index c4d45225145..e280d3780bc 100644 --- a/tests/cache/tests.py +++ b/tests/cache/tests.py @@ -1787,6 +1787,14 @@ class RedisCacheTests(BaseCacheTests, TestCase): def incr_decr_type_error(self): return self.lib.ResponseError + def test_incr_write_connection(self): + cache.set("number", 42) + with mock.patch( + "django.core.cache.backends.redis.RedisCacheClient.get_client" + ) as mocked_get_client: + cache.incr("number") + self.assertEqual(mocked_get_client.call_args.kwargs, {"write": True}) + def test_cache_client_class(self): self.assertIs(cache._class, RedisCacheClient) self.assertIsInstance(cache._cache, RedisCacheClient)