开发者社区 > 数据库 > NoSQL数据库 > 正文

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 2724 0
1 条回答
写回答
取消 提交回答
  • 官方回答

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

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

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

    如采用方案二 注意事项:

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

    2022-11-01 14:11:47
    赞同 展开评论 打赏

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

相关产品

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

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