开发者社区 > 数据库 > NoSQL数据库 > 正文
1
0
分享

Redis代理模式访问报错 ERR bad lua script for redis cluster

已解决

Redis集群版本,且使用代理模式访问实例,执行lua脚本:

eval " for i=1, #KEYS do redis.call('set',KEYS[i],ARGV[1]) redis.call('expire', KEYS[i], tonumber(ARGV[1])) end return 'succ' " 2 {wt:bb20000002}:30008:2022-10-10 {wt:bb20000002}:30008:2022-10-10 500

报错【error) 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】

展开
收起
阿里云服务支持 2022-11-01 11:11:54 2804 0 发布于浙江
举报
飞天免费试用计划
领取免费云资源,开启云上实践第一步
云数据库 Tair(兼容Redis)
内存型 2GB
额度1个月内有效
云数据库 MongoDB
独享型 2核8GB
额度1个月内有效
云原生多模数据库 Lindorm
多引擎 多规格 0-4节点
额度1个月内有效
1 条回答
写回答
取消 提交回答
  • 官方回答

    代理模式的额外限制,key的位置必须是KEYS array(不能使用Lua变量替换KEYS)

    1、修改lua脚本,KEYS[i]是不支持的

    2、或者使用直连地址连接实例执行该操作,如截图 image.png

    如采用方案二 注意事项:

    云数据库Redis集群版在迁移、变配时都会通过proxy代理迁移数据,直连模式下不符合代理模式的Lua脚本会迁移、变配失败。 建议在直连模式下使用Lua脚本时应尽可能符合代理模式下的限制规范,避免后续Lua脚本迁移、变配失败。

    2022-11-01 14:11:47 发布于浙江 举报
    赞同 1 打赏

    评论

    全部评论 (1)

    登录后可评论
    头像
    遇到同样的问题,请问不采用直连模板,怎么解决这个问题?业务上是需要传入变长的keys。所以需要在lua中遍历keys使用。现在看是没法绕过去了? @阿里云服务支持
    2024-04-26 16:30:09
    回复 赞同举报

阿里云NoSQL数据库提供了一种灵活的数据存储方式,可以支持各种数据模型,包括文档型、图型、列型和键值型。此外,它还提供了一种分布式的数据处理方式,可以支持高可用性和容灾备份。包含Redis社区版和Tair、多模数据库 Lindorm、MongoDB 版。

相关产品

  • 云数据库 Tair(兼容 Redis)
  • 相关电子书

    更多
    ApsaraDB for Redis——与创客同行 立即下载
    微博的Redis定制之路 立即下载
    云数据库Redis版的开源之路 立即下载
    AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等