140

我想使用redis-py来缓存一些数据,但是我找不到合适的解释来解释 和 之间的redis.StrictRedis()区别redis.Redis()。它们是等价的吗?

此外,我在Redis Python Docs中找不到任何关于redis.StrictRedis()'s arguments 的明确文档。任何的想法?

4

2 回答 2

169

编辑:它们现在是等价的:

redis-py 3.0 放弃了对旧版“Redis”客户端类的支持。“StrictRedis”已重命名为“Redis”,并提供了一个名为“StrictRedis”的别名,以便以前使用“StrictRedis”的用户可以继续原样运行。

原始答案: 这似乎很清楚

 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 类期望 *args 的形式为:name1, score1, name2, score2, ...

SETEX:“时间”和“价值”参数的顺序颠倒了。


于 2013-09-26T09:14:32.637 回答
65

这是一个老问题,但对于在谷歌搜索后遇到这个问题的人来说:

来自 redis-py 自述文件(链接):

redis-py 3.0 放弃了对旧版“Redis”客户端类的支持。“StrictRedis”已重命名为“Redis”,并提供了一个名为“StrictRedis”的别名,以便以前使用“StrictRedis”的用户可以继续原样运行。

这是定义StrictRedis链接)的redis-py代码中的行:

StrictRedis = Redis
于 2019-04-07T13:11:49.583 回答