01-阿里云使用redisson出现Lua脚本错误的解决

在阿里云使用Redisson时遇到Lua脚本错误,提示'ERR bad lua script for redis cluster...'. 通过修改阿里云Redis实例的script_check_enable参数为0,可以解决此限制。此限制原因为阿里云Redis集群对lua脚本的特殊要求,所有key必须在同一slot且必须通过KEYS数组传递。参考Redisson Issues和阿里云文档找到解决方案。
摘要由CSDN通过智能技术生成

阿里云使用redisson出现Lua脚本错误的解决

错误提示:

ERR bad lua script for redis cluster, all the keys that the script uses should be passed using the KEYS array, and KEYS should not be in expression

解决方法:

修改阿里云redis中script_check_enable参数为0即可解决该问题

谷歌搜索到相关Redisson的Issues,查到解决方法。

问题溯源:

Lua 脚本功能是 Reids的最大亮点, 通过内嵌对 Lua 环境的支持, Redis 解决了长久以来不能高效地处理 CAS (check-and-set)命令的缺点, 并且可以通过组合使用多个命令, 轻松实现以前很难实现或者不能高效实现的模式。
默认阿里云Redis会对lua脚本做一定限制,目的是为了保证脚本里面的所有操作都在相同slot进行,如果用户能够在代码确保所有操作都在相同slot而又想打破Redis集群的lua限制的话可以通过控制台修改script_check_enable参数为0,则后端不会对脚本进行校验。
云Redis集群对lua脚本限制如下:
所有key都应该由 KEYS 数组来传递,redis.call/pcall 中调用的redis命令,key的位置必须是KEYS array(不能使用Lua变量替换KEYS),否则直接返回错误信息,
“-ERR bad lua script for redis cluster, all the keys

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值