Skip to content

Commit d240e77

Browse files
committed
HDEL implemented
1 parent 9ada0de commit d240e77

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

redis/client.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ class Redis(threading.local):
175175
"""
176176
RESPONSE_CALLBACKS = dict_merge(
177177
string_keys_to_dict(
178-
'AUTH DEL EXISTS EXPIRE MOVE MSETNX RENAMENX SADD SISMEMBER SMOVE '
179-
'SETNX SREM ZADD ZREM',
178+
'AUTH DEL EXISTS EXPIRE HDEL MOVE MSETNX RENAMENX '
179+
'SADD SISMEMBER SMOVE SETNX SREM ZADD ZREM',
180180
bool
181181
),
182182
string_keys_to_dict(
@@ -912,6 +912,10 @@ def zscore(self, name, value):
912912

913913

914914
#### HASH COMMANDS ####
915+
def hdel(self, name, key):
916+
"Delete ``key`` from hash ``name``"
917+
return self.format_bulk('HDEL', name, key)
918+
915919
def hget(self, name, key):
916920
"Return the value of ``key`` within the hash ``name``"
917921
return self.format_bulk('HGET', name, key)

tests/server_commands.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -697,11 +697,10 @@ def make_hash(self, key, d):
697697
self.client.hset(key, k, v)
698698

699699
def test_hget_and_hset(self):
700-
# TODO: add these back in, but right now they produce a crash bug.
701700
# key is not a hash
702-
# self.client['a'] = 'a'
703-
# self.assertRaises(redis.ResponseError, self.client.hget, 'a', 'a1')
704-
# del self.client['a']
701+
self.client['a'] = 'a'
702+
self.assertRaises(redis.ResponseError, self.client.hget, 'a', 'a1')
703+
del self.client['a']
705704
# no key
706705
self.assertEquals(self.client.hget('a', 'a1'), None)
707706
# real logic
@@ -713,6 +712,22 @@ def test_hget_and_hset(self):
713712
self.assertEquals(self.client.hget('a', 'a2'), '5')
714713
self.assertEquals(self.client.hset('a', 'a4', 4), 1)
715714
self.assertEquals(self.client.hget('a', 'a4'), '4')
715+
# key inside of hash that doesn't exist returns null value
716+
self.assertEquals(self.client.hget('a', 'b'), None)
717+
718+
def test_hdel(self):
719+
# key is not a hash
720+
self.client['a'] = 'a'
721+
self.assertRaises(redis.ResponseError, self.client.hdel, 'a', 'a1')
722+
del self.client['a']
723+
# no key
724+
self.assertEquals(self.client.hdel('a', 'a1'), False)
725+
# real logic
726+
self.make_hash('a', {'a1': 1, 'a2': 2, 'a3': 3})
727+
self.assertEquals(self.client.hget('a', 'a2'), '2')
728+
self.assert_(self.client.hdel('a', 'a2'))
729+
self.assertEquals(self.client.hget('a', 'a2'), None)
730+
716731

717732
# SORT
718733
def test_sort_bad_key(self):

0 commit comments

Comments
 (0)