redis.clients.jedis.exceptions.JedisDataException: ERR Error compiling script (new function): user_script:1: 号码格式错误
2020-2-3 4:5:29
收藏:0
阅读:133
评论:1
我正在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: 号码格式错误 '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) ;
现在我很困惑,任何帮助都将不胜感激
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

你应该使用
jedis.evalsha而不是jedis.eval。你收到的错误是Redis服务器尝试将
262b4ca69c1805485d135aa6298c2b00bc7c8c09解释为实际脚本。要调用以前加载的脚本,您需要使用EVALSHA命令。