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

103

Je souhaite 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 redis.StrictRedis()les arguments de Redis Python Docs . Une idée?

abdos
la source

Réponses:

142

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 rétrocompatibilité? Utilisez Redis. Tu t'en fous? Utilisez StrictRedis.


31/03/2017

Voici les spécificités de la rétrocompatibilité, à 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é de sorte que 'num' puisse 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 des * args sous la forme de: nom1, score1, nom2, score2, ...

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


Hughdbrown
la source
39

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

à partir du fichier readme redis-py ( lien ):

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

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

StrictRedis = Redis
aliva
la source