redis-py: Jaka jest różnica między StrictRedis () i Redis ()?

105

Chcę używać redis-py do buforowania niektórych danych, ale nie mogę znaleźć odpowiedniego wyjaśnienia różnicy między redis.StrictRedis()i redis.Redis(). Czy są równoważne?

Ponadto nie mogę znaleźć jasnej dokumentacji dotyczącej redis.StrictRedis()argumentów w Redis Python Docs . Dowolny pomysł?

ABS
źródło

Odpowiedzi:

142

Wydaje się to całkiem jasne :

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

i

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

Czy potrzebujesz wstecznej kompatybilności? Użyj Redis. Nie obchodzi mnie to? Użyj StrictRedis.


2017-03-31

Oto szczegóły kompatybilności wstecznej, z cytowanego linku github.com:

Oprócz powyższych zmian, klasa Redis, podklasa StrictRedis, zastępuje kilka innych poleceń, aby zapewnić wsteczną kompatybilność ze starszymi wersjami redis-py:

LREM: Kolejność argumentów „num” i „value” odwrócona w taki sposób, że „num” może zapewnić domyślną wartość zero.

ZADD: Redis określa argument „wynik” przed „wartością”. Zostały one przypadkowo zamienione podczas implementacji i nie zostały odkryte, dopóki ludzie już ich nie używali. Klasa Redis oczekuje * argumentów w postaci: nazwa1, wynik1, nazwa2, wynik2, ...

SETEX: odwrócona kolejność argumentów „czas” i „wartość”.


hughdbrown
źródło
40

To stare pytanie, ale dla każdego, kto trafi na to pytanie po wyszukiwaniu w Google:

z pliku readme redis-py ( link ):

redis-py 3.0 porzuca obsługę starszej klasy klienta „Redis”. Nazwa „StrictRedis” została zmieniona na „Redis” i udostępniono alias o nazwie „StrictRedis”, dzięki czemu użytkownicy, którzy wcześniej używali „StrictRedis”, mogli nadal działać bez zmian.

Oto wiersz z kodu redis-py, który definiuje StrictRedis( link ):

StrictRedis = Redis
aliva
źródło