Skip to content

Return type differs between RESP2/3 for set operations, with hiredis #197

@aosh-ab7e

Description

@aosh-ab7e

Summary

With hiredis, set operations (such as SMEMBERS) returns different types between RESP2 and RESP3.
I confirmed the difference was not observed without hiredis.

Versions

Redis(server): 7.4.0
Python: 3.12.4
redis(Python Library): 5.0.8
hiredis(Python Library): 3.0.0

Example

Code:

from redis import Redis

client = Redis(protocol=2)
print("RESP2")
print(type(client.smembers("test-set")))
print(type(client.sunion("test-set")))
print(type(client.sdiff("test-set")))
print(type(client.sinter("test-set")))

client = Redis(protocol=3)
print("RESP3")
print(type(client.smembers("test-set")))
print(type(client.sunion("test-set")))
print(type(client.sdiff("test-set")))
print(type(client.sinter("test-set")))

Output:

RESP2
<class 'set'>
<class 'set'>
<class 'set'>
<class 'set'>
RESP3
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions