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

PythonRedis

Python Problem Overview


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(). Are they equivalent?

In addition, I can't find any clear documentation about redis.StrictRedis()'s arguments in Redis Python Docs. Any idea?

Python Solutions


Solution 1 - Python

EDIT: They are now equivalent:

> 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.

Original answer: 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.


Solution 2 - Python

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionABSView Question on Stackoverflow
Solution 1 - PythonhughdbrownView Answer on Stackoverflow
Solution 2 - PythonalivaView Answer on Stackoverflow