redis-py: ¿Cuál es la diferencia entre StrictRedis () y Redis ()?

103

Quiero usar redis-py para almacenar en caché algunos datos, pero no puedo encontrar una explicación adecuada de la diferencia entre redis.StrictRedis()y redis.Redis(). ¿Son equivalentes?

Además, no puedo encontrar ninguna documentación clara sobre redis.StrictRedis()los argumentos de 'en Redis Python Docs . ¿Alguna idea?

abdominales
fuente

Respuestas:

142

Esto parece bastante claro :

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

y

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

¿Necesita compatibilidad con versiones anteriores? Utilice Redis. No me importa Utilice StrictRedis.


2017-03-31

Aquí están los detalles de la compatibilidad con versiones anteriores, del enlace de github.com citado:

Además de los cambios anteriores, la clase Redis, una subclase de StrictRedis, anula varios otros comandos para proporcionar compatibilidad con versiones anteriores de redis-py:

LREM: Orden de los argumentos 'num' y 'value' invertidos de manera que 'num' puede proporcionar un valor predeterminado de cero.

ZADD: Redis especifica el argumento 'puntuación' antes de 'valor'. Estos se intercambiaron accidentalmente cuando se implementaron y no se descubrieron hasta después de que las personas ya lo estuvieran usando. La clase Redis espera * args en la forma de: nombre1, puntuación1, nombre2, puntuación2, ...

SETEX: Orden de los argumentos de 'tiempo' y 'valor' invertidos.


hughdbrown
fuente
39

Es una pregunta antigua, pero para cualquiera que llegue a esta pregunta después de la búsqueda en Google:

desde el archivo readme de redis-py ( enlace ):

redis-py 3.0 elimina el soporte para la clase de cliente "Redis" heredada. Se ha cambiado el nombre de "StrictRedis" a "Redis" y se proporciona un alias llamado "StrictRedis" para que los usuarios que usaban anteriormente "StrictRedis" puedan seguir ejecutándose sin cambios.

Aquí está la línea del código redis-py que define StrictRedis( enlace ):

StrictRedis = Redis
aliva
fuente