redis-py:StrictRedis()和Redis()有什么区别?

160
我想使用redis-py来缓存一些数据,但我找不到一个合适的解释来区分redis.StrictRedis()redis.Redis()之间的差异。它们是等价的吗?
此外,在Redis Python 文档中,我找不到有关redis.StrictRedis()参数的清晰文档。有什么想法吗?
2个回答

189

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

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 链接的向后兼容性的具体内容:

除了上述更改之外,Redis 类(StrictRedis 的子类)覆盖了其他几个命令,以提供与旧版本的 redis-py 向后兼容性:

LREM:'num' 和 'value' 参数的顺序相反,以便 'num' 可以提供默认值为零。

ZADD:Redis 指定 'score' 参数在 'value' 之前。由于实现时被错误地交换,直到人们已经在使用它之后才被发现。Redis 类期望 *args 采用以下形式:name1,score1,name2,score2,...

SETEX:'time' 和 'value' 参数的顺序相反。



74

这是一个老问题,但对于任何通过谷歌搜索到达这个问题的人:

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

redis-py 3.0 不再支持传统的 "Redis" 客户端类。"StrictRedis" 已更名为 "Redis",提供了一个别名 "StrictRedis",以便以前使用 "StrictRedis" 的用户可以继续不变地运行。

以下是定义 StrictRedis 的 redis-py 代码行(链接):

StrictRedis = Redis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接