Reputation: 37
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
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