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

时间:2013-09-26 07:17:53

标签: python redis

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

此外,我在Redis Python Docs中找不到关于redis.StrictRedis()参数的任何明确文档。 有什么想法吗?

2 个答案:

答案 0 :(得分:115)

This seems pretty clear

 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年3月31日

以下是向后兼容性的细节,来自引用的github.com链接:

  

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

     

LREM:'num'和'value'参数的顺序颠倒过来,'num'可以提供默认值零。

     

ZADD:Redis在'value'之前指定'score'参数。这些在实施时被意外交换,直到人们已经使用它之后才被发现。 Redis类期望* args的形式为:name1,score1,name2,score2,...

     

SETEX:“时间”和“价值”参数的顺序相反。


答案 1 :(得分:3)

这是一个古老的问题,但对于在搜索后遇到此问题的人:

来自redis-py自述文件:

  

redis-py 3.0放弃了对旧版“ Redis”客户端类的支持。   “ StrictRedis”已重命名为“ Redis”,别名为   提供“ StrictRedis”,以便以前使用“ StrictRedis”的用户   可以继续保持不变。

这是来自redis-py代码的一行,该行定义了StrictRedis

StrictRedis = Redis