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() 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章