gpt4 book ai didi

exception - redis.clients.jedis.exceptions.JedisDataException:ERR错误编译脚本(新功能):user_script:1:附近的格式错误的数字

转载 作者:行者123 更新时间:2023-12-03 06:45:23 33 4
gpt4 key购买 nike

我正在redis中编写一个lua脚本,并在 Spring 执行它,内容很简单

local store =   redis.call('hget',KEYS[1],'capacity')
print(store)
if store <= 0
then return 0
end
store = store - 1
redis.call('hset',KEYS[1],'capacity',store)
redis.call('sadd',KEYS[2],ARGV[1])
return 1

但是当我运行此脚本时,会引发异常
redis.clients.jedis.exceptions.JedisDataException: ERR Error compiling script (new function): user_script:1: malformed number near '262b4ca69c1805485d135aa6298c2b00bc7c8c09' 

我在redis-cli中尝试了以下脚本
eval "local s = tonumber(redis.call('hget',KEYS[1],'capacity')) return s" 1 001

它返回
(integer) 100

Java代码如下所示:
String script ="local store =   redis.call('hget',KEYS[1],'capacity')\n" +
"print(store)\n" +
"if store <= 0\n" +
"then return 0\n" +
"end\n" +
"store = store - 1\n" +
"redis.call('hset',KEYS[1],'capacity',store)\n" +
"redis.call('sadd',KEYS[2],ARGV[1])\n" +
"return 1\n" +
"\n";

if(sha==null){
sha = jedis.scriptLoad(script) ;
System.out.println("sha:"+sha);
}
Object ojb = jedis.eval(sha,2,id,userName,id) ;

现在我很困惑,任何帮助将不胜感激

最佳答案

您想使用 jedis.evalsha 而不是jedis.eval

您遇到的错误是Redis服务器试图将262b4ca69c1805485d135aa6298c2b00bc7c8c09解释为实际脚本。要调用先前加载的脚本,请使用 EVALSHA command

关于exception - redis.clients.jedis.exceptions.JedisDataException:ERR错误编译脚本(新功能):user_script:1:附近的格式错误的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60032958/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com