web-dev-qa-db-fra.com

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 appropriée 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 . Une idée?

81
ABS

Cela semble assez clair :

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

et

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

Avez-vous besoin d'une compatibilité descendante? Utilisez Redis. Tu t'en fous? Utilisez StrictRedis.


31/03/2017

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

En plus des modifications ci-dessus, la classe Redis, une sous-classe de StrictRedis, remplace plusieurs autres commandes pour fournir une compatibilité descendante avec les anciennes versions de redis-py:

LREM: Ordre des arguments 'num' et 'value' inversés de sorte que 'num' peut fournir une valeur par défaut de zéro.

ZADD: Redis spécifie l'argument "score" avant "valeur". Ceux-ci ont été échangés accidentellement lors de leur mise en œuvre et n'ont été découverts qu'après que les gens l'utilisaient déjà. La classe Redis attend * args sous la forme de: nom1, score1, nom2, score2, ...

SETEX: Ordre des arguments "temps" et "valeur" inversés.


118
hughdbrown

C'est une vieille question, mais pour quiconque accède à cette question après la recherche Google:

du readme de redis-py:

redis-py 3.0 supprime la prise en charge de la classe client héritée "Redis". "StrictRedis" a été renommé "Redis" et un alias nommé "StrictRedis" est fourni afin que les utilisateurs qui utilisaient auparavant "StrictRedis" puissent continuer à fonctionner sans changement.

Voici la ligne du code redis-py qui définit StrictRedis

StrictRedis = Redis
11
aliva