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

Posted

技术标签:

【中文标题】redis-py:StrictRedis() 和 Redis() 有啥区别?【英文标题】:redis-py : What's the difference between StrictRedis() and Redis()?redis-py:StrictRedis() 和 Redis() 有什么区别? 【发布时间】:2013-10-02 00:56:49 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

原答案: 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-03-31

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

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

LREM:“num”和“value”参数的顺序颠倒,这样“num”可以提供默认值零。

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

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


【讨论】:

【参考方案2】:

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

来自 redis-py 自述文件 (link):

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

这是定义 StrictRedis (link) 的 redis-py 代码中的一行:

StrictRedis = Redis

【讨论】:

以上是关于redis-py:StrictRedis() 和 Redis() 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

redis.Redis与redis.StrictRedis区别

redis-py

pythonredis基本命令和基本用法详解

Python redis

使用python操作redis(管道)

python 中对redis 操作采用装饰器进行处理,怎么做