【问题标题】: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() 参数的明确文档。 有什么想法吗?

【问题讨论】:

    标签: python redis


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2021-09-09
        • 2011-09-20
        • 1970-01-01
        • 2012-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-15
        • 2020-08-01
        相关资源
        最近更新 更多