1. 问题1

1.1. 使用Redisson加锁时报错

报错出现ERR unknown command 'WAIT'.

1.2. 分析流程

通过百度搜索了一下,基本可以确定是Aliyun Redis开启了Proxy模式,不支持wait命令。尝试升级Redisson版本,3.26.1版本之后可以正常加锁成功。

1.3. 问题总结

正好用的是Aliyun Redis服务7.0版本,目前先通过升级Redisson版本解决。

2. 问题2

2.1. 使用Redisson解锁时报错

解锁时报错 ERR bad lua script for redis cluster, first parameter of redis.call/redis.pcall must be a single literal string。

2.2. 分析流程

  • 优先百度,了解到报错提示是redis.call不支持第一个参数为动态参数ARGV[X],只能为常量字符'get/set..'这种。
  • 报错中有lua脚本,搜索发现确实有这种命令 redis.call(ARGV[5], KEYS[4] .. ':' .. nextThreadId, ARGV[1]);
  • 到github中找Redisson的issues,直接搜索single literal string,找到类似issue

  • 找到了Aliyun Redis相关的回答

  • 看来还是需要修改Aliyun Redis的配置😕

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐