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

使用Django操作Redis调用set命令报参数数量错误如何解决?

问题原因

核心是依赖版本不兼容:你当前使用的django-redis==5.0.0最低要求redis-py版本≥4.0.0,但你本地安装的是redis==3.5.3。

  • django-redis 5.x版本适配了redis-py 4.0+对SET命令的新参数传递规则,低版本redis-py无法识别新版django-redis传递的参数结构,所以会抛出"wrong number of arguments for 'set' command"错误。
  • 你设置timeout=0时能运行但拿不到值,是Django缓存的默认规则:timeout设为0代表该缓存项直接过期不存储,自然调用get方法无法返回结果。
  • 你尝试的cache.set({ip:'2'})写法不符合Django cache的set方法参数要求,Django原生cache.set的参数顺序是set(key, value, timeout=None),所以会报缺少必填参数的错误。
解决方案

二选一即可:

  1. 升级redis-py到适配版本
    执行命令升级到符合要求的redis-py版本:
pip install redis>=4.0.0
  1. 降级django-redis到适配redis 3.x的版本
    如果你不想改动redis-py的版本,将django-redis降级到4.x稳定版即可:
pip install django-redis==4.12.1

操作完成后重启Django服务即可正常使用cache.set方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:27:03