Xunny
Xunny

Reputation: 37

(redis-py 4.3) redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value

sismember throws error:

r.sismember('somename/fooset', 'blah')

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/myhome/lib/python3.9/site-packages/redis/commands/core.py", line 3251, in sismember
    return self.execute_command("SISMEMBER", name, value)
  File "/myhome/lib/python3.9/site-packages/redis/client.py", line 1227, in execute_command
    return conn.retry.call_with_retry(
  File "/myhome/lib/python3.9/site-packages/redis/retry.py", line 46, in call_with_retry
    return do()
  File "/myhome/lib/python3.9/site-packages/redis/client.py", line 1228, in <lambda>
    lambda: self._send_command_parse_response(
  File "/myhome/lib/python3.9/site-packages/redis/client.py", line 1204, in _send_command_parse_response
    return self.parse_response(conn, command_name, **options)
  File "/myhome/lib/python3.9/site-packages/redis/client.py", line 1243, in parse_response
    response = connection.read_response()
  File "/myhome/lib/python3.9/site-packages/redis/connection.py", line 842, in read_response
    raise response
redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value

The ZSET under name 'somename/foo' is:

r.zrange('somename/fooset', 0, -1, desc=True, withscores=True)
# [(b'blah', 2.0), (b'hlah', 1.0)]

r.zscore('somename/fooset', 'blah') returns the right type.

Upvotes: 0

Views: 973

Answers (1)

Anton
Anton

Reputation: 4052

SISMEMBER applies to Redis Sets. ZRANGE and ZSCORE commands - to Sorted Sets.

Hence the error. Nothing to do with Python.

If your key is indeed a Sorted Set - you can use ZSCORE to identify id element is a member of a sorted set, as described here.

Upvotes: 1

Related Questions