summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeongchuel Ahn <aciddust20@gmail.com>2023-05-08 19:55:23 +0900
committerGitHub <noreply@github.com>2023-05-08 13:55:23 +0300
commit8c06d67f574bef941f7e19b1b2b36e767ed42b6d (patch)
treeb96b704ff0593f3b7e2d06f5cd12af42d9213ca8
parentc0833f60a1d9ec85c589004aba6b6739e6298248 (diff)
downloadredis-py-8c06d67f574bef941f7e19b1b2b36e767ed42b6d.tar.gz
Add client no-touch (#2745)
* Add client no-touch * Update redis/commands/core.py Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com> * Update test_commands.py Improve test_client_no_touch * Update test_commands.py Add async version test case * Chore remove whitespace Oops --------- Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com>
-rw-r--r--redis/commands/core.py11
-rw-r--r--tests/test_asyncio/test_commands.py8
-rw-r--r--tests/test_commands.py8
3 files changed, 27 insertions, 0 deletions
diff --git a/redis/commands/core.py b/redis/commands/core.py
index d67291b..1a4acb2 100644
--- a/redis/commands/core.py
+++ b/redis/commands/core.py
@@ -761,6 +761,17 @@ class ManagementCommands(CommandsProtocol):
"""
return self.execute_command("CLIENT NO-EVICT", mode)
+ def client_no_touch(self, mode: str) -> Union[Awaitable[str], str]:
+ """
+ # The command controls whether commands sent by the client will alter
+ # the LRU/LFU of the keys they access.
+ # When turned on, the current client will not change LFU/LRU stats,
+ # unless it sends the TOUCH command.
+
+ For more information see https://redis.io/commands/client-no-touch
+ """
+ return self.execute_command("CLIENT NO-TOUCH", mode)
+
def command(self, **kwargs):
"""
Returns dict reply of details about all Redis commands.
diff --git a/tests/test_asyncio/test_commands.py b/tests/test_asyncio/test_commands.py
index ac3537d..955b9d4 100644
--- a/tests/test_asyncio/test_commands.py
+++ b/tests/test_asyncio/test_commands.py
@@ -453,6 +453,14 @@ class TestRedisCommands:
with pytest.raises(exceptions.RedisError):
await r.client_pause(timeout="not an integer")
+ @skip_if_server_version_lt("7.2.0")
+ @pytest.mark.onlynoncluster
+ async def test_client_no_touch(self, r: redis.Redis):
+ assert await r.client_no_touch("ON") == b"OK"
+ assert await r.client_no_touch("OFF") == b"OK"
+ with pytest.raises(TypeError):
+ await r.client_no_touch()
+
async def test_config_get(self, r: redis.Redis):
data = await r.config_get()
assert "maxmemory" in data
diff --git a/tests/test_commands.py b/tests/test_commands.py
index cb89669..c71e347 100644
--- a/tests/test_commands.py
+++ b/tests/test_commands.py
@@ -697,6 +697,14 @@ class TestRedisCommands:
r.client_no_evict()
@pytest.mark.onlynoncluster
+ @skip_if_server_version_lt("7.2.0")
+ def test_client_no_touch(self, r):
+ assert r.client_no_touch("ON") == b"OK"
+ assert r.client_no_touch("OFF") == b"OK"
+ with pytest.raises(TypeError):
+ r.client_no_touch()
+
+ @pytest.mark.onlynoncluster
@skip_if_server_version_lt("3.2.0")
def test_client_reply(self, r, r_timeout):
assert r_timeout.client_reply("ON") == b"OK"