web-dev-qa-db-ja.com

redis-py:StrictRedis()とRedis()の違いは何ですか?

一部のデータをキャッシュするためにredis-pyを使用したいのですが、redis.StrictRedis()の違いの適切な説明が見つかりませんおよびredis.Redis()。それらは同等ですか?

また、 Redis Python Docs 。にredis.StrictRedis()の引数に関する明確なドキュメントが見つかりません。

81
ABS

これはかなり明確なようです

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

そして

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

後方互換性が必要ですか? Redisを使用します。どうでもいい? StrictRedisを使用します。


2017-03-31

以下は、引用されたgithub.comリンクからの後方互換性の詳細です。

上記の変更に加えて、StrictRedisのサブクラスであるRedisクラスは、他のいくつかのコマンドをオーバーライドして、古いバージョンのredis-pyとの後方互換性を提供します。

LREM:「num」と「value」引数の順序が逆になり、「num」がデフォルト値のゼロを提供できるようになりました。

ZADD:Redisは、 'value'の前に 'score'引数を指定します。これらは実装時に誤って交換され、人々がすでに使用するまで発見されませんでした。 Redisクラスでは、name1、score1、name2、score2、...の形式の* argsが必要です。

SETEX:「時間」引数と「値」引数の順序が逆になりました。


118
hughdbrown

これは古い質問ですが、Google検索の後にこの質問に到達した人にとっては:

redis-py readmeから:

redis-py 3.0では、従来の「Redis」クライアントクラスのサポートが廃止されました。 「StrictRedis」は「Redis」に名前が変更され、「StrictRedis」という名前のエイリアスが提供されるため、以前に「StrictRedis」を使用していたユーザーはそのまま実行できます。

以下は、StrictRedisを定義するredis-pyコードの行です。

StrictRedis = Redis
11
aliva