summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorItamar Haber <itamar@redislabs.com>2018-10-15 20:52:33 +0300
committerRoey Prat <roey.prat@redislabs.com>2018-10-20 10:33:10 +0300
commita52239eee366f9c2087370111878489957ddc3d4 (patch)
tree7427d807aba42108e96edb9080048bd01a83b86d
parent016efdb72b1410670f28d890006ed9fa42393a34 (diff)
downloadredis-py-a52239eee366f9c2087370111878489957ddc3d4.tar.gz
Implements XDEL
-rwxr-xr-xredis/client.py13
-rw-r--r--tests/test_commands.py14
2 files changed, 26 insertions, 1 deletions
diff --git a/redis/client.py b/redis/client.py
index 410cdac..45b9879 100755
--- a/redis/client.py
+++ b/redis/client.py
@@ -432,7 +432,10 @@ class StrictRedis(object):
'XINFO CONSUMERS': parse_xinfo_list,
'XINFO GROUPS': parse_xinfo_list
},
- string_keys_to_dict('XACK', int),
+ string_keys_to_dict(
+ 'XACK XDEL',
+ int
+ ),
string_keys_to_dict(
'INCRBYFLOAT HINCRBYFLOAT GEODIST',
float
@@ -1962,6 +1965,14 @@ class StrictRedis(object):
"""
return self.execute_command('XACK', name, groupname, *ids)
+ def xdel(self, name, *ids):
+ """
+ Deletes one or more messages from a stream.
+ name: name of the stream.
+ *ids: message ids to delete.
+ """
+ return self.execute_command('XDEL', name, *ids)
+
# SORTED SET COMMANDS
def zadd(self, name, *args, **kwargs):
"""
diff --git a/tests/test_commands.py b/tests/test_commands.py
index 1f70230..ab9c9c9 100644
--- a/tests/test_commands.py
+++ b/tests/test_commands.py
@@ -1742,6 +1742,20 @@ class TestStrictCommands(object):
assert sr.xack(stream_name, group_name, '1-1') == 0
assert sr.xack(stream_name, group_name, *[x for x in range(5)]) == 0
+ @skip_if_server_version_lt('5.0.0')
+ def test_strict_xdel(self, sr):
+ stream_name = 'xdel_test_stream'
+ sr.delete(stream_name)
+
+ assert sr.xdel(stream_name, 1) == 0
+
+ sr.xadd(stream_name, id=1, foo='bar')
+ assert sr.xdel(stream_name, 1) == 1
+
+ stamp = sr.xadd(stream_name, baz='qaz')
+ assert sr.xdel(stream_name, 1, stamp) == 1
+ assert sr.xdel(stream_name, 1, stamp, 42) == 0
+
def test_strict_zadd(self, sr):
sr.zadd('a', 1.0, 'a1', 2.0, 'a2', a3=3.0)
assert sr.zrange('a', 0, -1, withscores=True) == \