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