You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中decode_responses=False的Redis实例如何正确标注类型?

Redis实例(返回bytes类型)的正确类型标注方式

你遇到的TypeError: Redis is not a generic class错误,是因为当前使用的redis-py版本不支持直接用Redis[bytes]这种泛型标注语法。以下是不同版本的解决方案:

方案1:升级redis-py到4.3.0+

新版本的redis-py已将Redis类实现为泛型,直接使用泛型标注即可:

from redis import Redis

client: Redis[bytes] = Redis(decode_responses=False)

方案2:旧版redis-py(低于4.3.0)的替代方案

如果无法升级版本,可以通过以下方式标注:

  • 使用typing.cast强制指定类型:
    from redis import Redis
    from typing import cast
    
    client = cast(Redis, Redis(decode_responses=False))
    
  • 或者自定义类型别名:
    from redis import Redis
    from typing import TypeAlias
    
    BytesRedis: TypeAlias = Redis
    client: BytesRedis = Redis(decode_responses=False)
    

注:当decode_responses=False时,Redis客户端的所有返回值默认都是bytes类型,上述标注可以让类型检查工具(如mypy)正确识别返回值类型。

内容的提问来源于stack exchange,提问作者tiyee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:51:55