155 votes

Redis-py : Quelle est la différence entre StrictRedis() et Redis()?

Je veux utiliser redis-py pour mettre en cache certaines données, mais je ne trouve pas d'explication adéquate de la différence entre redis.StrictRedis() et redis.Redis(). Sont-ils équivalents?

De plus, je ne trouve aucune documentation claire sur les arguments de redis.StrictRedis() dans Redis Python Docs. Des idées?

185voto

hughdbrown Points 15770

EDIT : Ils sont maintenant équivalents :

redis-py 3.0 abandonne le support de la classe client "Redis" obsolète. "StrictRedis" a été renommé en "Redis" et un alias nommé "StrictRedis" est fourni pour que les utilisateurs utilisant précédemment "StrictRedis" puissent continuer à fonctionner sans changements.

Réponse originale : Cela semble assez clair:

 redis-py expose deux classes client qui implémentent ces commandes
 La classe StrictRedis tente de respecter la syntaxe des commandes officielles.

et

En plus des changements ci-dessus, la classe Redis, une sous-classe de StrictRedis,
remplace plusieurs autres commandes pour assurer la rétrocompatibilité avec les anciennes
versions de redis-py

Avez-vous besoin de la rétrocompatibilité ? Utilisez Redis. Est-ce indifférent ? Utilisez StrictRedis.


2017-03-31

Voici les détails de la rétrocompatibilité, à partir du lien github.com cité :

En plus des changements ci-dessus, la classe Redis, une sous-classe de StrictRedis, remplace plusieurs autres commandes pour assurer la rétrocompatibilité avec les anciennes versions de redis-py :

LREM : L'ordre des arguments 'num' et 'value' est inversé de sorte que 'num' puisse fournir une valeur par défaut de zéro.

ZADD : Redis spécifie l'argument 'score' avant 'value'. Ils ont été échangés accidentellement lors de l'implémentation et n'ont été découverts qu'après que des personnes l'utilisaient déjà. La classe Redis attend *args sous la forme : name1, score1, name2, score2, ...

SETEX : L'ordre des arguments 'time' et 'value' est inversé.


72voto

ali Points 401

C'est une vieille question mais pour quiconque tombe sur cette question après une recherche sur Google :

d'après le readme de redis-py (lien) :

redis-py 3.0 abandonne le support de la classe client "Redis" héritée. "StrictRedis" a été renommé en "Redis" et un alias nommé "StrictRedis" est fourni afin que les utilisateurs utilisant auparavant "StrictRedis" puissent continuer à fonctionner sans modifications.

Voici la ligne du code redis-py qui définit StrictRedis (lien) :

StrictRedis = Redis

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X