redis-py : What's the difference between StrictRedis() and Redis()?

后端 未结 2 1510
小鲜肉
小鲜肉 2021-01-31 00:44

I want to use redis-py for caching some data, but I can\'t find a suitable explanation of the difference between redis.StrictRedis() and redis.Redis(

相关标签:
2条回答
  • 2021-01-31 01:29

    It's an old question but for anyone who reaches this question after google search:

    from redis-py readme (link):

    redis-py 3.0 drops support for the legacy "Redis" client class. "StrictRedis" has been renamed to "Redis" and an alias named "StrictRedis" is provided so that users previously using "StrictRedis" can continue to run unchanged.

    Here is the line from redis-py code which defines StrictRedis (link):

    StrictRedis = Redis
    
    0 讨论(0)
  • 2021-01-31 01:38

    This seems pretty clear:

     redis-py exposes two client classes that implement these commands
     The StrictRedis class attempts to adhere to the official command syntax.
    

    and

    In addition to the changes above, the Redis class, a subclass of StrictRedis,
    overrides several other commands to provide backwards compatibility with older
    versions of redis-py
    

    Do you need backwards compatibility? Use Redis. Don't care? Use StrictRedis.


    2017-03-31

    Here are the specifics of the backwards compatibility, from the github.com link cited:

    In addition to the changes above, the Redis class, a subclass of StrictRedis, overrides several other commands to provide backwards compatibility with older versions of redis-py:

    LREM: Order of 'num' and 'value' arguments reversed such that 'num' can provide a default value of zero.

    ZADD: Redis specifies the 'score' argument before 'value'. These were swapped accidentally when being implemented and not discovered until after people were already using it. The Redis class expects *args in the form of: name1, score1, name2, score2, ...

    SETEX: Order of 'time' and 'value' arguments reversed.


    0 讨论(0)
提交回复
热议问题